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

Python字典的.keys()和.values()返回结果是否保证顺序一致?

问题解答

结论完全取决于你使用的Python版本:

  • Python 3.7及更高正式版本:a == b 恒为True
    从Python 3.7开始,语言标准正式规定字典默认保留插入顺序,keys()、values()、items()三个方法返回的视图对象,迭代顺序完全和键值对的插入顺序一致,同位置的key和value严格对应,所以你给出的代码里zip拼接后的键值对和原字典完全一致,生成的新字典和原字典相等。
  • Python 3.6版本:仅CPython实现下成立,不属于通用保证
    Python 3.6的CPython解释器首次实现了字典保留插入顺序的特性,但这属于实现细节,没有写入语言标准,如果你使用其他非CPython的解释器(比如早期版本的PyPy等),顺序不保证一致,a == b的结果不确定。
  • Python 3.5及更早版本:完全不保证成立
    更早版本的Python字典是无序结构,keys()和values()的迭代顺序没有对应规则,只要字典有过元素删除、新增的操作,两个返回值的顺序大概率不匹配,a == b经常会返回False。

另外补充更规范的写法:你不需要分别取keys()和values()再zip,直接迭代a.items()就能拿到一一对应的键值对,写法更简洁也兼容所有Python版本:

b = {k:v for k,v in a.items()}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 05:51:02