如何根据满足某些条件的字典在字典列表中获取字典值?例如,如果列表中的一个字典的id = 5,我想打印与该字典的name
键对应的值:
list = [{'name': 'Mike', 'id': 1}, {'name': 'Ellen', 'id': 5}]
id = 5
if any(m['id'] == id for m in list):
print m['name']
这不会起作用,因为m
未在if语句之外定义。
答案 0 :(得分:3)
你有一个列表的词典,所以你可以使用列表理解:
[d for d in lst if d['id'] == 5]
# [{'id': 5, 'name': 'Ellen'}]
答案 1 :(得分:3)
new_list = [m['name'] for m in list if m['id']==5]
print '\n'.join(new_list)
答案 2 :(得分:1)
使用单个for循环很容易实现:
for d in list:
if 'id' in d and d['in'] == 5:
print(d['name'])
这里要学习两个关键概念。首先,我们使用for loop来"浏览列表中的每个元素"。第二,我们使用in字来检查字典是否有某个键。
答案 3 :(得分:0)
以下情况如何?
for entry in list:
if entry['id']==5:
print entry['name']
答案 4 :(得分:0)
它不存在于Python2
中,但Python3
中的一个简单解决方案是使用ChainMap
代替list
。
import collections
d = collections.ChainMap(*[{'name':'Mike', 'id': 1}, {'name':'Ellen', 'id': 5}])
if 'id' in d:
print(d['id'])
答案 5 :(得分:0)
您可以使用过滤功能:
lis = [ {'name': 'Mike', 'id': 1}, {'name':'Ellen', 'id': 5}]
result = filter(lambda dic:dic['id']==5,lis)[0]['name']
print(result)