J'ai une liste remplie liste remplie comme si
record.append([key, value1, count1, value2, count2])
mais lorsque j'utilise la fonction intégrée, cela ne fonctionne pas.
if k in record
Quelle est la manière la plus élégante de rechercher une liste multi-dimensionnelle en Python?
Réponses:
2 pour la réponse № 1Pour rechercher une clé dans une liste, vous devez effectuer une recherche dans ces listes internes:
vous pouvez utiliser any
ici:
any(key in x for x in record)
ou si votre clé est toujours au premier index, cela fonctionnera également:
any(key == x[0] for x in record)
Ou utiliser list.extend
pour ajouter des éléments individuels à la liste (au lieu de la liste entière), votre méthode fonctionnera correctement.
1 pour la réponse № 2
import operator
if key in map(operator.itemgetter(0),records): ...
est la méthode que j’utiliserais probablement, ou la méthode la plus efficace qui court-circuitera sans itérer la liste complète (selon le commentaire de Ashwini) ...
import operator,itertools
if key in itertools.imap(operator.itemgetter(0),records): ...
mais vraiment je pense ce que vous voulez réellement
def findRecord(key,records):
for r in records:
if r[0] == key:
return r
print findRecord("some_key",records)