[英]Summing specific elements in nested dict
我有3個使用嵌套字典表示的袋子。 它們的鍵是“ bag1”,“ bag2”和“ bag3”,並且依次包含不同數量的不同顏色的球,每種顏色類別也由字典表示。 如何以僅在每個包中添加所有相應顏色的字典結尾? 例如dict1 = {'bag1': { 'red' : 2, 'blue' : 5, 'green' : 7}, 'bag2' : { 'red' : 3, 'blue': 4, 'green': 8}}
。 現在,我想以另一種形式的最終字典結束: dict2 = { 'red' : 5, 'blue': 9, 'green': 15}
。 有人可以為我提供執行此操作的功能嗎?
首先,您要創建結果字典:
dict2 = {}
for key in dict1['bag1'].keys():
dict2[key] = 0
然后填寫
for bag in dict1.values():
for key, value in bag.items():
dict2[key] += value
在遞歸函數get_value
下面,它將從JSON查找鍵的值。
import json
def get_value(key, mydict):
if key in mydict:
return mydict[key]
if type(mydict) is dict:
for i in mydict:
if type(i) is dict:
return get_value(key, i)
return 0
def get_sum(dict1, dict2):
red, blue, green = 0, 0, 0
red = get_value('red', dict1) + get_value('red', dict2)
blue = get_value('blue', dict1) + get_value('blue', dict2)
green = get_value('green', dict1) + get_value('green', dict2)
return {
'red':red,
'blue': blue,
'green':green
}
if __name__=="__main__":
dict1 = {'bag1': { 'red' : 2, 'blue' : 5, 'green' : 7}, 'bag2' : { 'red' : 3, 'blue': 4, 'green': 8}}
dict2 = { 'red' : 5, 'blue': 9, 'green': 15}
final_sum = get_sum(dict1, dict2)
print(final_sum)
輸出: {'red': 5, 'blue': 9, 'green': 15}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.