Как найти значение в списке словарей python?
Составьте список словарей python в следующем формате. Как бы вы выполняли поиск, чтобы найти определенное имя?
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}]
Не удалось выполнить следующее:
if 'Test' in label[name]
'Test' in label.values()
Ответы
Ответ 1
Вам нужно будет искать все словари в своем списке; используйте any()
с выражением генератора:
any(d['name'] == 'Test' for d in label)
Это короткое замыкание; return True
, когда найдено первое совпадение, или верните False
, если ни один из словарей не соответствует.
Ответ 2
Вы также можете выполнить следующие действия:
>>> 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}
Или, возможно, более четко:
match = None
for l in label:
if l['name'] == 'Test':
match = l
break