python - 为字典中的每个字典添加一个键,在一行中执行此操作
问题描述
我有一个字典,结构如下
{'kelly': {'w1': 8, 'w2': 12},
'elisa': {'w1': 2, 'w2': 0},
'julia': {'w1': 4, 'w2': 6}}
我会有这个结果
{'kelly': {'w1': 8, 'w2': 12, 'total': 20},
'elisa': {'w1': 2, 'w2': 0, 'total': 2},
'julia': {'w1': 4, 'w2': 6, 'total': 10}}
这就是我所做的
def append_summation_field(data):
for k, v in data.items():
v['total'] = sum(v.values())
return data
我的问题是,我可以在一行代码(如 list-comprehension 或 lambda 或其他代码)中做到这一点吗?
解决方案
data = {'kelly': {'w1': 8, 'w2': 12},
'elisa': {'w1': 2, 'w2': 0},
'julia': {'w1': 4, 'w2': 6}}
print({k: {**v, "total": sum(v.values())} for k, v in data.items()})
{'kelly': {'w1': 8, 'w2': 12, 'total': 20}, 'elisa': {'w1': 2, 'w2': 0, 'total': 2}, 'julia': {'w1': 4, 'w2': 6, 'total': 10}}
推荐阅读
- powershell - 如何在 Powershell 中列出所有已安装、可运行的 cmdlet?
- java - 如何验证网址是否正确
- time - SSRS 格式时间字段不带冒号
- glsl - GLSL 在 GLSL ES 中的转置替代方案?
- reactjs - Redux 传奇:使用 yield call() 和 async/await 有什么区别?
- python - 如何从嵌套列中提取json到数据框
- java - 即使手机连接到互联网,改造也会出现“无互联网”错误
- pandas - python panda中引用类型列表的排序问题
- if-statement - 如何将列表的元组与值进行比较?
- php - 在没有 ON CASCADE 的情况下准备多行 PHP 代码中的语句