首页 > 解决方案 > 为字典中的每个字典添加一个键,在一行中执行此操作

问题描述

我有一个字典,结构如下

{'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 或其他代码)中做到这一点吗?

标签: python

解决方案


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}}

推荐阅读