亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

是否可以循環對嵌套字典中列表中的值求和?

是否可以循環對嵌套字典中列表中的值求和?

哈士奇WWW 2021-10-19 16:17:22
我的數據結構如下:all= {        '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]}        }我的目標是獲取列表中所有第一項的全局總和。到目前為止,我只能使用以下代碼獲得頂級字典的每個鍵的總和:for partData in all.values():    depPart = 0    for act in partData.keys():        depPart += partData[act][0]       print(depPart)它返回100125250雖然我想得到總和,即 250我為了得到這個總和而進一步循環的每一次嘗試都導致了錯誤。是循環的方式來做到這一點,如果是的話如何?或者有另一種/更好的方法來達到它嗎?謝謝
查看完整描述

3 回答

?
泛舟湖上清波郎朗

TA貢獻1818條經驗 獲得超3個贊

您可以將該sum函數與生成器表達式一起使用,該表達式遍歷 dict 和子 dicts 的值:

sum(n for d in a.values() for n, _ in d.values())

這將返回:

250

請注意,這all是一個內置函數名稱,因此我已將all您問題中的變量重命名為a


查看完整回答
反對 回復 2021-10-19
?
BIG陽

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)

希望能幫助到你


查看完整回答
反對 回復 2021-10-19
?
拉風的咖菲貓

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


查看完整回答
反對 回復 2021-10-19
  • 3 回答
  • 0 關注
  • 305 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號