如果更改值,python字典中dictionary.keys()中键的顺序是否会更改?

时间:2013-06-04 02:20:20

标签: python dictionary

我有一个python字典(比如说dict),我继续修改值(键保持不变)。当我修改与键对应的值时,dict.keys()给出的列表中键的顺序是否会改变?

3 个答案:

答案 0 :(得分:2)

不,python字典有一个键的顺序,但不保证该顺序是什么或如何计算。
这就是为什么不保证首先订购它们的原因 存储在字典中的值对键的哈希值没有影响,因此不会改变排序。

取自Python Documentation

  

字典对象的keys()方法以任意顺序返回字典中使用的所有键的列表(如果要对其进行排序,只需将sorted()函数应用于它)。要检查单个键是否在字典中,请使用in关键字。

答案 1 :(得分:1)

不,因为您更改了值,所以dict的顺序不会改变。该顺序仅取决于键(或其哈希值,至少在CPython中更具体)。但是,它可能会在Python的版本和实现之间发生变化,而在Python 3.3中,每次启动Python时它都会发生变化。

答案 2 :(得分:0)

不应假设Python字典的键排序不变。

但是,还有其他数据结构可以提供一致的密钥排序,它的工作方式很像字典:

http://stromberg.dnsalias.org/~strombrg/treap/

http://stromberg.dnsalias.org/~strombrg/red-black-tree-mod/

顺便说一句,你不应该将变量命名为“dict”,因为有一个名为“dict”的内置类型将被隐藏。