为了账号安全,请及时绑定邮箱和手机立即绑定

如何对python中一个字典中所有对象的值求和

如何对python中一个字典中所有对象的值求和

芜湖不芜 2021-08-14 15:41:47
我有以下字典:data = {    'test1': {        'x1': {            'z1': 22,            'z2': 11,            'z3': 21,        },        'x2': {            'z1': 15,            'z2': 34,            'z3': 54,        }    },    'test2': {        'x1': {            'z1': 22,            'z2': 11,            'z3': 21,        },        'x2': {            'z1': 15,            'z2': 34,            'z3': 54,        }    }}我想做的是对“test1”中的所有 z2 对象求和,在这种情况下,得到 45我知道我可以通过以下方式做到这一点:data['test1']['x1']['z2'] + data['test1']['x2']['z2']但想知道是否有机会在一个代码中使用它,例如data['test1'][ * ]['z2'] 星星代表所有对象的地方(就像在excel中一样 - 这个例子当然不起作用想知道这个问题是否有更好的解决方案
查看完整描述

2 回答

?
元芳怎么了

TA贡献1798条经验 获得超7个赞

您可以使用sum:


d = {'test1': {'x1': {'z1': 22, 'z2': 11, 'z3': 21}, 'x2': {'z1': 15, 'z2': 34, 'z3': 54}}, 'test2': {'x1': {'z1': 22, 'z2': 11, 'z3': 21}, 'x2': {'z1': 15, 'z2': 34, 'z3': 54}}}

result = sum(b['z2'] for a, b in d['test1'].items())

输出:


45

编辑:没有显式循环,您可以使用reduce:


from functools import reduce

new_result = reduce(lambda x, y:x+y['z2'], d['test1'].values(), 0)

输出:


45


查看完整回答
反对 回复 2021-08-14
  • 2 回答
  • 0 关注
  • 280 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信