Python 3.6+字典已有序,为何无法通过索引访问字典元素?
为什么Python 3.6+的有序字典不能用索引直接访问?
- Python 3.6及以上版本的字典确实会保留插入顺序,但它的本质依然是键值对映射结构,而非列表、元组这类基于索引的序列类型。字典底层用哈希表实现,存储逻辑是通过键的哈希值定位元素,不是按索引位置存储,因此不支持直接用整数索引取值。
- 当你执行
print(dictionary_name[index])时,Python会把括号里的index当作字典的键去查找。如果你的字典中不存在这个整数作为键,就会抛出KeyError报错。 - 如果需要按插入顺序访问字典元素,可以用这些方式:
- 先获取键的列表再通过索引取值:
print(dictionary_name[list(dictionary_name.keys())[index]]) - 直接获取值的列表再按索引访问:
print(list(dictionary_name.values())[index]) - 获取键值对列表后按索引访问:
print(list(dictionary_name.items())[index])
- 先获取键的列表再通过索引取值:
内容的提问来源于stack exchange,提问作者Lorkim
相关产品推荐
相关产品推荐

