从词典列表中提取项目

时间:2011-10-26 09:29:24

标签: python

假设您有一个像这样的词典列表:

a = [ {'name':'pippo', 'age':'5'} , {'name':'pluto', 'age':'7'} ]

你从这个列表中只提取名称== pluto的字典? 为了让事情变得更加困难,请考虑我不能做任何导入

5 个答案:

答案 0 :(得分:22)

列表理解是理想的:

[d for d in a if d['name'] == 'pluto']

答案 1 :(得分:10)

除了列表理解,其他响应给你,你也可以使用过滤器和lambda:

filter(lambda x: x.get('name') == 'pluto',a)

答案 2 :(得分:1)

[d for d in a if d['name'] == 'pluto']

答案 3 :(得分:1)

>>> [d['age'] for d in a if d['name']=='pluto']
['7']

答案 4 :(得分:1)

使用列表推导,在dicts列表中选择正确的dict。

 >>> [d for d in a if d['name']=='pluto']
 [{'age': '7', 'name': 'pluto'}]

或者,如果您不确定a中的所有词语是否都有“名称”键,

 >>> [d for d in a if d.get('name')=='pluto']
 [{'age': '7', 'name': 'pluto'}]

请注意,这两个都会返回列表。如果您知道只有一个匹配的条目,您可以在末尾添加[0]以返回实际的字典:

 >>> [d for d in a if d['name']=='pluto'][0]
 {'age': '7', 'name': 'pluto'}