3 回答

TA貢獻1818條經驗 獲得超3個贊
您可以將該sum
函數與生成器表達式一起使用,該表達式遍歷 dict 和子 dicts 的值:
sum(n for d in a.values() for n, _ in d.values())
這將返回:
250
請注意,這all
是一個內置函數名稱,因此我已將all
您問題中的變量重命名為a
。

TA貢獻1859條經驗 獲得超6個贊
原因是首先
for partData in all.values():
depPart = 0
for act in partData.keys():
depPart += partData[act][0]
print(depPart)
在第 2 行,depPart=0每次您從所有print(depPart)打印值中獲取一個值時, 每次它都會對每個值中的每個值求和,因此您的代碼應該是
depPart = 0
for partData in all.values():
for act in partData.keys():
depPart += partData[act][0]
print(depPart)
希望能幫助到你

TA貢獻1995條經驗 獲得超2個贊
您可以使用列表理解sum:
d = {'part1': {'act1': [0, 0], 'act2': [100, 0]}, 'part2': {'act1': [25, 1], 'act2': [100, 1]}, 'part3': {'act1': [25, 0], 'act2': [0, 1]}, 'part4': {'act1': [0, 0], 'act2': [0, 1]}}
_sum = sum(sum(a for a, *_ in c.values()) for c in d.values())
輸出:
#[100, 125, 25, 0]
250
添加回答
舉報