我有以下字典: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
添加回答
举报
0/150
提交
取消