python-3.x - 检查字典中是否有特定值,并在匹配值之后插入一个新项目
问题描述
我有一个字典列表,我正在尝试检查列表中的每个字典是否包含特定值,然后如果值匹配,则将新项目插入匹配的字典。
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方法来简化这段代码?
解决方案
这是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'
推荐阅读
- c++ - 我可以为特定的 wx[Aui]Notebook 选项卡使用自定义颜色吗
- git - git 从带有子模块的 repo 中的先前提交创建新分支
- r - 如何使用数据逐行比较方差分析
- node.js - 读取 zip 文件中的 xml 文件
- c++ - 同时使用 MKL 和 Eigen LAPACK 时出错
- fortran - 如何将单精度数字作为双精度读入fortran?
- asp.net-core - ASP.NET Core:获取存储过程结果到视图模型
- wxwidgets - 为什么 wxPanel 构造函数有默认的 WindowID 而 wxBookCtrl 构造函数没有?
- python-3.x - tkinter 按钮绑定()错误
- .net-core - ocelot 配置文件中的环境变量