You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python嵌套字典排序问题:按points排序未达预期结果求助

问题:按points排序嵌套字典未得到预期结果

问题描述

我想要根据points对嵌套字典中的球队进行排序,编写了排序代码但未得到预期效果。期望排序顺序为Spain、Portugal、Morocco、Iran。

原始字典

{
    'Spain': {
        'wins': 3,
        'loses': 0,
        'draws': 0,
        'goal difference': 4,
        'points': 9
    },
    'Iran': {
        'wins': 0,
        'loses': 3,
        'draws': 0,
        'goal difference': -6,
        'points': 0
    },
    'Portugal': {
        'wins': 2,
        'loses': 1,
        'draws': 0,
        'goal difference': 4,
        'points': 6
    },
    'Morocco': {
        'wins': 1,
        'loses': 2,
        'draws': 0,
        'goal difference': -2,
        'points': 3
    }
}

使用的排序代码

from collections import OrderedDict

sorted_dict = OrderedDict(sorted(B_group.items(), key=lambda x: x[1]["points"], reverse=True))

当前得到的结果

Spain  wins:3 , loses:0 , draws:0 , goal difference:4 , points:9
Iran  wins:0 , loses:3 , draws:0 , goal difference:-6 , points:0
Portugal  wins:2 , loses:1 , draws:0 , goal difference:4 , points:6
Morocco  wins:1 , loses:2 , draws:0 , goal difference:-2 , points:3

问题分析与解决方案

你的排序代码逻辑本身是正确的,当前结果顺序异常大概率是输出方式错误——比如你可能没遍历排序后的OrderedDict,而是直接输出了原字典,或者输出代码存在疏漏。

验证排序是否生效的正确方式是遍历排序后的结果:

for team, stats in sorted_dict.items():
    print(f"{team}  wins:{stats['wins']} , loses:{stats['loses']} , draws:{stats['draws']} , goal difference:{stats['goal difference']} , points:{stats['points']}")

执行这段代码后,会得到你期望的顺序:

Spain  wins:3 , loses:0 , draws:0 , goal difference:4 , points:9
Portugal  wins:2 , loses:1 , draws:0 , goal difference:4 , points:6
Morocco  wins:1 , loses:2 , draws:0 , goal difference:-2 , points:3
Iran  wins:0 , loses:3 , draws:0 , goal difference:-6 , points:0

另外,在Python 3.7+版本中,普通字典默认保持插入顺序,也可以不用OrderedDict,直接生成排序后的列表处理:

sorted_teams = sorted(B_group.items(), key=lambda x: x[1]["points"], reverse=True)
for team, stats in sorted_teams:
    print(f"{team}  wins:{stats['wins']} , loses:{stats['loses']} , draws:{stats['draws']} , goal difference:{stats['goal difference']} , points:{stats['points']}")

内容的提问来源于stack exchange,提问作者yosef

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 05:19:53