首页 > 解决方案 > 检查字典中是否有特定值,并在匹配值之后插入一个新项目

问题描述

我有一个字典列表,我正在尝试检查列表中的每个字典是否包含特定值,然后如果值匹配,则将新项目插入匹配的字典。

emp_name = "Jack"
my_list =  [{'name':'Jack', 'age':'42', 'j_id':'1'}, {'name':'charles', 'age':'32', 'j_id':'34'}, {'name':'john', 'age':'44', 'j_id':'3'}, {'name':'jacob', 'age':'24', 'j_id':'5'}]
for item in my_list:
    name = item.get('name')
    print(name)
    if name == emp_name:
        item['date'] = "something"
        print(item)
        # add this item value to the dictionary
    else:
        print("not_matching")

这是我的预期输出:

[{'name':'Jack', 'age':'42', 'j_id':'1', 'date':'something'}, 
{'name':'charles', 'age':'32', 'j_id':'34'}, {'name':'john', 'age':'44', 
'j_id':'3'}, {'name':'jacob', 'age':'24', 'j_id':'5'}]

有没有其他pythonic方法来简化这段代码?

标签: python-3.xdictionary

解决方案


这是for循环的简化版本。

for item in my_list:
    if 'name' in item and item['name'] == emp_name:
        item['date'] = 'something'

编辑:替代解决方案(如下面的@brunodesthuilliers 所建议) - 是使用 dict 的get()方法(下面的评论部分中有更多详细信息)。

for item in my_list:
    if item.get("name", "") == emp_name:
        item['date'] = 'something'

推荐阅读