我有嵌套字典,想總結它最嵌套的字典是這樣的:
{
"USA":{
'008612':{
'January':{
'target':345,
'achieved':0
},
'Febuary':{
'target':305,
'achieved':0
},
'March':{
'target':345,
'achieved':0
},
},
'001232':{
'January':{
'target':245,
'achieved':0
},
'Febuary':{
'target':205,
'achieved':0
},
'March':{
'target':105,
'achieved':0
},
}
},
"UK":{
'008612':{
'January':{
'target':645,
'achieved':0
},
'Febuary':{
'target':505,
'achieved':0
},
'March':{
'target':445,
'achieved':0
},
},
'001232':{
'January':{
'target':745,
'achieved':0
},
'Febuary':{
'target':605,
'achieved':0
},
'March':{
'target':405,
'achieved':0
},
}
}
}
要求總字典包含同一專案代碼{008612}和同一月份的目標和實作的總和的此類字典。例如,應在新添加的 Total 字典中添加相同月份的相同專案代碼:
{
"Total":{
'008612':{
'January':{
'target':990=345 645,
'achieved':0=0 0
},
'Febuary':{
'target':810,
'achieved':0
},
'March':{
'target':790,
'achieved':0
},
},
'001232':{
'January':{
'target':890,
'achieved':0
},
'Febuary':{
'target':810,
'achieved':0
},
'March':{
'target':510,
'achieved':0
},
},
"USA":{
'008612':{
'January':{
'target':345,
'achieved':0
},
'Febuary':{
'target':305,
'achieved':0
},
'March':{
'target':345,
'achieved':0
},
},
'001232':{
'January':{
'target':245,
'achieved':0
},
'Febuary':{
'target':205,
'achieved':0
},
'March':{
'target':105,
'achieved':0
},
}
},
"UK":{
'008612':{
'January':{
'target':645,
'achieved':0
},
'Febuary':{
'target':505,
'achieved':0
},
'March':{
'target':445,
'achieved':0
},
},
'001232':{
'January':{
'target':745,
'achieved':0
},
'Febuary':{
'target':605,
'achieved':0
},
'March':{
'target':405,
'achieved':0
},
}
}
}
提前致謝!
uj5u.com熱心網友回復:
您將不得不多次遍歷字典及其值,并計算一個單獨的字典來存盤計算的值。已撰寫示例代碼供您參考:
total = {}
for k, v in data.items(): # data is the original data dict
for ik, iv in v.items():
temp = total.get(ik, {})
if not temp:
total[ik] = iv
else:
for tk, tv in temp.items():
for itk, itv in tv.items():
temp[tk][itk] = iv[tk][itk]
一旦計算出上述總字典,您就可以將其添加到原始資料中。希望這能回答你的問題。干杯!
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/456024.html
上一篇:將兩個串列合并為字典時,如何在不丟失字典python中的任何值的情況下添加鍵的值?
下一篇:在字典中添加鍵時出現鍵錯誤
