我有一个字典,结构如下
{'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我的问题是,我能不能用一行代码来做这件事,比如清单理解、兰博达或者其他什么?
发布于 2020-08-12 06:03:37
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}}发布于 2020-08-12 06:08:38
在Python3.9的PEP 584下,使用dict update操作符,您还可以:
{k: v | {"total": sum(v.values())} for k, v in data.items()}发布于 2020-08-12 06:04:11
列表理解将是复杂的,因为结果应该是一个dict (您必须解压它,并将它重新打包为一个dict)。但是您可以在一行上使用for-循环:
for k in d.keys(): d[k]['total']=sum(d[k].values())https://stackoverflow.com/questions/63370629
复制相似问题