Ayez une liste de dictionnaires python dans le format suivant. Comment feriez-vous une recherche pour trouver un nom spécifique?
label = [{'date': datetime.datetime(2013, 6, 17, 8, 56, 24, 2347),
'name': 'Test',
'pos': 6},
{'date': datetime.datetime(2013, 6, 17, 8, 56, 24, 2347),
'name': 'Name 2',
'pos': 1}]
Les éléments suivants n'ont pas fonctionné:
if 'Test' in label[name]
'Test' in label.values()
Vous devez rechercher dans tous les dictionnaires de votre liste; utilisez any()
avec une expression de générateur:
any(d['name'] == 'Test' for d in label)
Cela court-circuitera; renvoie True
lorsque la première correspondance est trouvée, ou renvoie False
si aucun des dictionnaires ne correspond.
Vous pourriez également être après:
>>> match = next((l for l in label if l['name'] == 'Test'), None)
>>> print match
{'date': datetime.datetime(2013, 6, 17, 8, 56, 24, 2347),
'name': 'Test',
'pos': 6}
Ou peut-être plus clairement:
match = None
for l in label:
if l['name'] == 'Test':
match = l
break