假设您有一个像这样的词典列表:
a = [ {'name':'pippo', 'age':'5'} , {'name':'pluto', 'age':'7'} ]
你从这个列表中只提取名称== pluto的字典? 为了让事情变得更加困难,请考虑我不能做任何导入
答案 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'}