मैं शब्दकोशों जो की तरह दिखता है की एक सूची है के आधार पर शब्दकोश की सूची में मूल्य:अजगर - योग एक ही कुंजी
data = [{'stat3': '5', 'stat2': '4', 'player': '1'},
{'stat3': '8', 'stat2': '1', 'player': '1'},
{'stat3': '6', 'stat2': '1', 'player': '3'},
{'stat3': '3', 'stat2': '7', 'player': '3'}]
और मैं एक नेस्टेड शब्दकोश जिसका कुंजी प्राप्त करना चाहते हैं से मान रहे हैं कुंजी ('प्लेयर') और जिनके मान समेकित आंकड़ों के शब्दकोश हैं।
उत्पादन चाहिए:
{'3': {'stat3': 9, 'stat2': 8, 'player': '3'},
'1': {'stat3': 13, 'stat2': 5, 'player': '1'}}
पीछा कर रहा है मेरी कोड:
{'3': {'player': '3', 'stat3': 17, 'stat2': 17},
'1': {'player': '1', 'stat3': 18, 'stat2': 18}}
मैं इसे कैसे सही कर सकता है:
from collections import defaultdict
result = {}
total_stat = defaultdict(int)
for dict in data:
total_stat[dict['player']] += int(dict['stat3'])
total_stat[dict['player']] += int(dict['stat2'])
total_stat = ([{'player': info, 'stat3': total_stat[info],
'stat2': total_stat[info]} for info in
sorted(total_stat, reverse=True)])
for item in total_stat:
result.update({item['player']: item})
print(result)
हालांकि, मैं यह मिल गया? या क्या अन्य दृष्टिकोण हैं?
एक साइड नोट के रूप में, ऐसा लगता है कि आप डेटा के बजाय नाम के लिए नामांकित करना चाहते हैं। – Elazar
'stat3 ': total_stat [info], ' stat2 ': total_stat [info]' - निश्चित रूप से यह वही मान – Elazar