如何在python词典列表中查找值?

时间:2013-06-17 14:06:21

标签: python list dictionary

以下列格式列出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()

2 个答案:

答案 0 :(得分:56)

您必须搜索列表中的所有词典;将any()与生成器表达式一起使用:

any(d['name'] == 'Test' for d in label)

这会短路;找到第一个匹配时返回True,如果没有一个词典匹配,则返回False

答案 1 :(得分:35)

你可能也会追随:

>>> 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