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

Python中按数值对嵌套字典的逗号分隔字符串值排序

按嵌套字典中的miles数值排序问题解决

你给出的嵌套字典:

some_dictionary = {
    "sub_dict1": {
        "miles": "5,024,279"
    },
    "sub_dict2": {
        "miles": "733,391"
    },
    "sub_dict3": {
        "miles": "7,151,502"
    }
}

需要排序后得到:

"sub_dict2": {"miles": "733,391"},
"sub_dict1": {"miles": "5,024,279"},
"sub_dict3": {"miles": "7,151,502"}

你的代码触发TypeError,问题出在排序的key函数上:

top = OrderedDict(sorted(some_dictionary.items(), key=lambda x: (x[1], "miles".replace(',', '')))

这里有两个核心错误:

  • 你没正确提取子字典里的miles值,x[1]是整个子字典,直接用来排序会报错,因为字典无法直接比较大小;
  • ""miles".replace(',', '')"完全无效,你操作的是固定字符串"miles",而非子字典中存储的miles数值字符串。

另外代码还缺失一个右括号,会导致语法错误。

修正后的代码

from collections import OrderedDict

some_dictionary = {
    "sub_dict1": {
        "miles": "5,024,279"
    },
    "sub_dict2": {
        "miles": "733,391"
    },
    "sub_dict3": {
        "miles": "7,151,502"
    }
}

# 按miles的数值从小到大排序
top = OrderedDict(sorted(some_dictionary.items(), key=lambda x: int(x[1]["miles"].replace(',', ''))))

# 按目标格式输出
for key, value in top.items():
    print(f'"{key}": {value},')

运行后输出:

"sub_dict2": {"miles": "733,391"},
"sub_dict1": {"miles": "5,024,279"},
"sub_dict3": {"miles": "7,151,502"},

简化版本(Python3.7+)

如果你的Python版本是3.7及以上,普通字典已经会保留插入顺序,无需使用OrderedDict:

top = dict(sorted(some_dictionary.items(), key=lambda x: int(x[1]["miles"].replace(',', ''))))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 10:55:26