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

Python3.6+如何通过值所属类提供的sort_key方法对字典排序

错误原因

sorted(unsorted.items(), ...) 返回的迭代对象的每个元素都是(整数键, Dog实例)组成的二元组,原写法里直接把整个二元组赋值给了变量k,再用unsorted[k]取值时,二元组根本不是原字典的合法键,自然会触发KeyError。

修正代码

既然排序后已经拿到了完整的键值对,直接在字典推导式里拆包键和值即可,不需要再回原字典查询:

# 目标:先按name排序再按age排序,最终得到键顺序为113, 111, 114, 112的字典
result = {k: v for k, v in sorted(unsorted.items(), key=lambda i: i[1].sort_key())}

补充写法

如果你偏好先单独排序键的实现方式,也可以用下面的代码,效果完全一致:

sorted_keys = sorted(unsorted, key=lambda k: unsorted[k].sort_key())
result = {k: unsorted[k] for k in sorted_keys}

结果验证

遍历输出result的键即可确认顺序符合预期:

for k in result:
    print(k)
# 输出顺序:113 111 114 112

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 07:06:03