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

Python字典推导式生成排序键字典输出异常问题咨询

错误原因
  • 字典推导式用了错误的双重循环逻辑:你写的{i: j for i in sorted(r.keys()) for j in r.values()}属于嵌套遍历,每拿到一个排序后的键i,都会遍历一遍r的所有值,最终每个键都会被覆盖为遍历到的最后一个值,因此得到的结果所有键的取值都相同。
  • 变量名大小写不匹配:代码中定义的是大写变量X,打印的是小写变量x,Python对大小写敏感,严格运行时会直接报变量未定义的错误,你给出的输出应该是手动修正了大小写后的运行结果。
  • 补充说明:Python 3.7及以上版本才会默认保留字典的插入顺序,低于该版本的Python环境无法保证字典键的顺序固定。
修正方法

只需要遍历排序后的键,直接取原字典中对应键的值即可,同时统一变量名:

a = {'a': 1, 'b': 2}
r = {'b': 2, 'a': 1}
x = {k: r[k] for k in sorted(r.keys())}

print(x)
print(x == a)

运行输出:

{'a': 1, 'b': 2}
True

也可以直接对字典做排序(默认遍历字典的键),简化为x = {k: r[k] for k in sorted(r)},效果完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 14:21:02