Python – 嵌套字典值求和
有时,在使用Python字典时,我们可能会遇到嵌套记录的问题,我们需要对它的键值进行累积求和。这可以在 Web 开发和竞争性编程等领域有可能的应用。让我们讨论可以执行此任务的某些方式。
方法 #1:使用循环 + items() + values()
上述功能的组合可以用来解决这个问题。在此,我们遍历使用 values() 提取的所有值并执行求和任务。
# Python3 code to demonstrate working of
# Nested Dictionary values summation
# Using loop + items() + values()
# initializing dictionary
test_dict = {'gfg' : {'a' : 4, 'b' : 5, 'c' : 8},
'is' : {'a' : 8, 'c' : 10},
'best' : {'c' : 19, 'b' : 10}}
# printing original dictionary
print("The original dictionary is : " + str(test_dict))
# Nested Dictionary values summation
# Using loop + items() + values()
res = dict()
for sub in test_dict.values():
for key, ele in sub.items():
res[key] = ele + res.get(key, 0)
# printing result
print("The summation dictionary is : " + str(res))
输出 :
The original dictionary is : {‘gfg’: {‘a’: 4, ‘b’: 5, ‘c’: 8}, ‘best’: {‘b’: 10, ‘c’: 19}, ‘is’: {‘a’: 8, ‘c’: 10}}
The summation dictionary is : {‘a’: 12, ‘b’: 15, ‘c’: 37}
方法 #2:使用Counter() + values()
上述方法的组合可用于执行此任务。在此,我们使用 Counter() 保存所需的频率,并且可以使用 values() 完成值的提取。
# Python3 code to demonstrate working of
# Nested Dictionary values summation
# Using Counter() + values()
from collections import Counter
# initializing dictionary
test_dict = {'gfg' : {'a' : 4, 'b' : 5, 'c' : 8},
'is' : {'a' : 8, 'c' : 10},
'best' : {'c' : 19, 'b' : 10}}
# printing original dictionary
print("The original dictionary is : " + str(test_dict))
# Nested Dictionary values summation
# Using Counter() + values()
res = Counter()
for val in test_dict.values():
res.update(val)
# printing result
print("The summation dictionary is : " + str(dict(res)))
输出 :
The original dictionary is : {‘gfg’: {‘a’: 4, ‘b’: 5, ‘c’: 8}, ‘best’: {‘b’: 10, ‘c’: 19}, ‘is’: {‘a’: 8, ‘c’: 10}}
The summation dictionary is : {‘a’: 12, ‘b’: 15, ‘c’: 37}