Подтвердить что ты не робот

Как найти значение в списке словарей 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()
4b9b3361

Ответ 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