4

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

4

3 回答 3

2

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

取自Python 文档

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

于 2013-06-04T02:23:54.753 回答
1

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

于 2013-06-04T02:56:28.737 回答
0

不应假定 Python 字典的键顺序是恒定的。

但是,还有其他数据结构确实提供了一致的键顺序,它们的工作原理很像字典:

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

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

顺便说一句,您不应该将变量命名为“dict”,因为有一个名为“dict”的内置类型将变得不可见。

于 2013-06-04T03:03:50.967 回答