首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在一个dict中为每个dict添加一个键,在一行中执行此操作

在一个dict中为每个dict添加一个键,在一行中执行此操作
EN

Stack Overflow用户
提问于 2020-08-12 05:59:32
回答 3查看 49关注 0票数 0

我有一个字典,结构如下

代码语言:javascript
复制
{'kelly': {'w1': 8, 'w2': 12},
 'elisa': {'w1': 2, 'w2': 0},
 'julia': {'w1': 4, 'w2': 6}}

我会得到这个结果

代码语言:javascript
复制
{'kelly': {'w1': 8, 'w2': 12, 'total': 20},
 'elisa': {'w1': 2, 'w2': 0, 'total': 2},
 'julia': {'w1': 4, 'w2': 6, 'total': 10}}

这就是我所做的

代码语言:javascript
复制
def append_summation_field(data):
    for k, v in data.items():
        v['total'] = sum(v.values())
    return data

我的问题是,我能不能用一行代码来做这件事,比如清单理解、兰博达或者其他什么?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2020-08-12 06:03:37

代码语言:javascript
复制
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()})
代码语言:javascript
复制
{'kelly': {'w1': 8, 'w2': 12, 'total': 20}, 'elisa': {'w1': 2, 'w2': 0, 'total': 2}, 'julia': {'w1': 4, 'w2': 6, 'total': 10}}
票数 3
EN

Stack Overflow用户

发布于 2020-08-12 06:08:38

在Python3.9的PEP 584下,使用dict update操作符,您还可以:

代码语言:javascript
复制
{k: v | {"total": sum(v.values())} for k, v in data.items()}
票数 3
EN

Stack Overflow用户

发布于 2020-08-12 06:04:11

列表理解将是复杂的,因为结果应该是一个dict (您必须解压它,并将它重新打包为一个dict)。但是您可以在一行上使用for-循环:

代码语言:javascript
复制
for k in d.keys(): d[k]['total']=sum(d[k].values())
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63370629

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档