如何按值对字典内的字典进行排序?

问题描述 投票:0回答:1

我正在尝试对包含曲棍球队部门的字典进行排序。每个团队都是字典的一个元素,每个团队的值是一个包含点数 (PTS) 和 VRP 统计数据的字典。我正在尝试根据每个分区内的球队得分降序对他们进行排序。每个部门的排序是独立的。

这是我的代码:

dic = {
            "Atlantic": {
                "TeamA": {"PTS": 80, "VRP": 35},
                "TeamB": {"PTS": 65, "VRP": 31},
                "TeamC": {"PTS": 80, "VRP": 30}
            },
            "Metropolitan": {
                "TeamD": {"PTS": 60, "VRP": 29},
                "TeamE": {"PTS": 65, "VRP": 28}
            }
        }

def ranking_sorting(ranking):
    for division in ranking.values():
        division = dict(sorted(division.items(), key=lambda x:x[1]["PTS"], reverse = True))



ranking_sorting(dic)

print(dic)

我尝试使用 lambda 函数作为排序函数中的键,以使用 key=lambda x:[1]["PTS"] 访问团队值内的 PTS 值。

这是我期望的结果:

      {
            "Atlantic": {
                "TeamA": {"PTS": 80, "VRP": 35},
                "TeamC": {"PTS": 80, "VRP": 30}
                "TeamB": {"PTS": 65, "VRP": 31},
                
            },
            "Metropolitan": {
                "TeamE": {"PTS": 65, "VRP": 28}
                "TeamD": {"PTS": 60, "VRP": 29},
                            }
        }

当我尝试打印字典时,我得到了原始字典,但它没有排序。

dictionary sorting lambda nested sorteddictionary
1个回答
0
投票

我想通了。我需要将“部门”团队分配给该部门:

def trier_classement(classement):
for nom_divison, equipes in classement.items():
    equipes = dict(sorted(equipes.items(), key=lambda x:x[1]["PTS"], reverse = True))
    classement[nom_divison] = equipes

部门团队确实已排序,但我没有将它们分配到主词典中。

© www.soinside.com 2019 - 2024. All rights reserved.