我有一个嵌套的 Python 字典:
dct={1: {'13C': (13, 'C'), '6C': (6, 'C'), '13D': (13, 'D'), '10D': (10, 'D'), '7H': (7, 'H'), '5H': (5, 'H'), '5D': (5, 'D')}, 2: {'6C': (6, 'C'), '10D': (10, 'D'), '7H': (7, 'H'), '14D': (14, 'D'), '5H': (5, 'H'), '5D': (5, 'D'), '14C': (14, 'C')}}
我希望仅提取每个子词典的数字,确定最大的 5 个数字,然后将它们相加。到目前为止我的代码(我已经尝试了许多变体以及 itertools 中其他类似帖子的其他建议):
for player in dct:
print player
print dct[player]
for cards in dct[player].keys():
print cards
期望的结果:
条目“5D”和“5H”对于第一个和第二个条目来说是最低的(在本例中),因此它们不会包含在总和中。因此,第一个条目的结果是 first=13+6+13+10+7
和 second=6+10+7+14+14
。因此,first=49
和 second=51
。如何进行这个计算?
最佳答案
您想要迭代所有子词典,然后提取值。找到五个最高值,并将它们相加:
>>> for key, subdictionary in dct.items():
values = [x[0] for x in subdictionary.values()]
values.sort(reverse=True)
print(key, sum(values[:5]))
1 49
2 51
关于python - 对嵌套字典中的值求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34569744/