我有一个 python 字典(比如 dict),我在其中不断修改值(键保持不变)。当我修改与键对应的值时,dict.keys() 给出的列表中键的顺序会改变吗?
user2449961
问问题
560 次
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 回答