Python - 在if语句之后获取字典列表中的字典元素

时间:2017-02-15 21:01:29

标签: python dictionary

如何根据满足某些条件的字典在字典列表中获取字典值?例如,如果列表中的一个字典的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语句之外定义。

6 个答案:

答案 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)