Tengo una lista poblada lista poblada como tal
record.append([key, value1, count1, value2, count2])
pero cuando uso la función incorporada no funciona.
if k in record
¿Cuál es la forma más elegante de buscar una lista multidimensional en Python?
Respuestas
2 para la respuesta № 1Para buscar una clave en una lista de la lista, debe buscar dentro de esas listas internas:
puedes usar any
aquí:
any(key in x for x in record)
o si su clave está siempre en el primer índice, esto también funcionará:
any(key == x[0] for x in record)
o usar list.extend
para agregar elementos individuales a la lista (en lugar de la lista completa), entonces su método funcionará bien.
1 para la respuesta № 2
import operator
if key in map(operator.itemgetter(0),records): ...
es el método que probablemente usaría, o el método más eficiente que cortocircuitaría sin iterar toda la lista (según el comentario de Ashwini) ...
import operator,itertools
if key in itertools.imap(operator.itemgetter(0),records): ...
Pero realmente creo que lo que realmente quieres
def findRecord(key,records):
for r in records:
if r[0] == key:
return r
print findRecord("some_key",records)