我有以下字典: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, } }}我想做的是對(duì)“test1”中的所有 z2 對(duì)象求和,在這種情況下,得到 45我知道我可以通過(guò)以下方式做到這一點(diǎn):data['test1']['x1']['z2'] + data['test1']['x2']['z2']但想知道是否有機(jī)會(huì)在一個(gè)代碼中使用它,例如data['test1'][ * ]['z2'] 星星代表所有對(duì)象的地方(就像在excel中一樣 - 這個(gè)例子當(dāng)然不起作用想知道這個(gè)問(wèn)題是否有更好的解決方案
2 回答

元芳怎么了
TA貢獻(xiàn)1798條經(jīng)驗(yàn) 獲得超7個(gè)贊
您可以使用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
編輯:沒(méi)有顯式循環(huán),您可以使用reduce:
from functools import reduce
new_result = reduce(lambda x, y:x+y['z2'], d['test1'].values(), 0)
輸出:
45
添加回答
舉報(bào)
0/150
提交
取消