我正在尝试对以下字典中属于“销售额”的所有数字进行求和:
{'a': {'sales': {}, 'revenue': {}}, 'b': {'sales': {}, 'revenue': {}}, 'c': {'sales': {'February2017': 6240.0, 'March2017': 8869.75, 'January2017': 15720.0}, 'revenue': {'February2017': 312.0, 'March2017': 432.4, 'January2017': 786.0}}, 'd': {'sales': {'February2017': 4184.9, 'March2017': 6181.709999999999, 'January2017': 6080.55}, 'revenue': {'February2017': 188.86, 'March2017': 292.61, 'January2017': 273.45}}}
#
输出应为:6240 + 8869.75 + 15720 + 4184.9 + 6181.7099 + 6080.55
我能够逐一循环按键并得到正确的答案,但是有没有更有效的方法来做到这一点?
total_sum = 0
for key,value in dict.items():
for key_a, value_a in value['sales'].items():
total_sum += value_a
例如,有没有一种方法可以通过使用诸如 reduce
之类的东西来做到这一点?
谢谢
最佳答案
当您可以使用生成器表达式进行 sum()
时,为什么还要使用 reduce()
,例如:
>>> sum(sum(value['sales'].values()) for value in data.values())
47276.91
或者以嵌套形式:
>>> sum(n for value in data.values() for n in value['sales'].values())
47276.91
注意:您不应该调用变量 dict
,因为它隐藏了 python 的内置 dict
类型。
关于python - 减少嵌套字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44896999/