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

Python字典keys()与values()返回序列同索引元素是否存在对应关系?

问题解答

首先要明确两个基础前提:

  • Python 3 中 d.keys() 返回 dict_keys 类型视图,d.values() 返回 dict_values 类型视图,两类视图都不支持下标索引访问,直接执行 k[n] 会抛出 TypeError: 'dict_keys' object is not subscriptable 错误。
  • 如果你是先将视图转换为了列表再做索引,即代码为 k = list(d.keys())、v = list(d.values()),对应关系要分场景判断:
    1. Python 3.7及以上版本(官方规范级保证)
      字典插入顺序被正式纳入Python语言规范,keys()、values()、items() 的遍历顺序完全和键的插入顺序一致,只要转换为列表期间没有修改字典结构,相同索引位置的元素必然是对应的键值对。
    2. Python 3.6版本(仅CPython实现保证)
      CPython实现的3.6版本已经默认保留字典插入顺序,但这个特性属于实现细节,没有写进语言规范,不能保证在所有Python解释器(比如PyPy、Jython)下成立。
    3. Python 3.5及更早版本、Python 2.x版本
      字典属于无序结构,没有固定的遍历顺序,但只要你调用 keys() 和 values() 的间隔期没有对字典做增删键的修改操作,两者的迭代顺序是严格匹配的,转成列表后相同索引位置的元素依然是对应的键值对。

注意:如果在获取 keys()、values() 视图后修改了字典的结构(新增、删除键),视图会实时同步更新,迭代顺序可能发生变化,此时两者的元素对应关系就无法得到保证。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 08:54:00