python - 对嵌套字典中的值求和

标签 python

我有一个嵌套的 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+7second=6+10+7+14+14。因此,first=49second=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/

相关文章:

python - f 字符串给出 SyntaxError?

python - 如何在不循环的情况下将多个矩阵相乘?

python - 如何解析没有分隔符的元组?

python - 模块没有属性

python - 带有多行标题 xls 文件的 Pandas read_csv

python - 如何在 Heroku 虚拟实例 (dyno) 中使用参数触发 Python 函数?

Python:从 FTP 读取完后删除文件

python - 目前如何在Pygame中播放视频?

python - 二维数据的 Keras 内置 MSE 损失返回二维矩阵,而不是标量损失

Python 列表理解 - 需要元素跳过组合