当前位置: 代码迷 >> python >> Python-在if语句后的字典列表中获取字典元素
  详细解决方案

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

热度:41   发布时间:2023-06-16 10:12:09.0

如何根据满足某些条件的字典在字典列表中获取字典值? 例如,如果列表中的词典之一具有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']

这是行不通的,因为没有在if语句之外定义m

您有一个字典列表 ,因此可以使用列表推导:

[d for d in lst if d['id'] == 5]

# [{'id': 5, 'name': 'Ellen'}]
new_list = [m['name'] for m in list if m['id']==5]
print '\n'.join(new_list)

使用单个for循环即可轻松完成此操作:

for d in list:
    if 'id' in d and d['in'] == 5:
        print(d['name'])

这里有两个关键概念需要学习。 首先是我们使用了来“遍历列表的每个元素”。 第二,是我们使用单词来检查字典是否具有特定的键。

接下来呢?

for entry in list:
    if entry['id']==5:
        print entry['name']

它不存在于Python2 ,但在一个简单的解决方案Python3是使用一个ChainMap代替的list

import collections

d = collections.ChainMap(*[{'name':'Mike', 'id': 1}, {'name':'Ellen', 'id': 5}])
if 'id' in d:
    print(d['id'])

您可以使用过滤器功能来做到这一点:

lis = [ {'name': 'Mike', 'id': 1}, {'name':'Ellen', 'id': 5}]
result = filter(lambda dic:dic['id']==5,lis)[0]['name']
print(result)