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

How to sort a dictionary inside a dictionary by values?

提问人:Popcycle999 提问时间:10/28/2023 最后编辑:marc_sPopcycle999 更新时间:10/28/2023 访问量:15

问:

我正在尝试对这本包含曲棍球队部门的词典进行排序。每个团队都是字典的一个元素,每个团队的值都是一个字典,其中包含多个点 (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},
                            }
        }

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

字典 排序 lambda 嵌套 sorteddictionary

评论


答:

0赞 Popcycle999 10/28/2023 #1

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

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

分区团队确实被分类了,但我没有将它们分配到主词典中。