【发布时间】:2013-05-25 18:20:05
【问题描述】:
我想知道 python 中的字典以什么顺序存储键:值对。我在我的 python shell 中编写了以下内容,但我无法弄清楚它存储键的顺序的原因是什么:值对。
>>> d = {}
>>> d['a'] = 8
>>> d['b'] = 8
>>> d
{'a': 8, 'b': 8}
>>> d['c'] = 8
>>> d
{'a': 8, 'c': 8, 'b': 8}
>>> d['z'] = 8
>>> d
{'a': 8, 'c': 8, 'b': 8, 'z': 8}
>>> d['w'] = 8
>>> d
{'a': 8, 'c': 8, 'b': 8, 'z': 8, 'w': 8}
我也尝试了同样的事情,对相同的键使用不同的值。但顺序保持不变。再添加一个 key : value 对会给出另一个无法确定的结果。这里是:
>>> d[1] = 8
>>> d
{'a': 8, 1: 8, 'c': 8, 'b': 8, 'w': 8, 'z': 8}
【问题讨论】:
-
没有保证订购;插入和删除,键值决定顺序。
-
字典在 python 中是无序的,就像列表和元组一样,@Indradhanush Gupta 你在评论中有一个很好的链接
-
@IndradhanushGupta:当然,重播相同的插入意味着您再次看到相同的订单。但是,如果您添加了一些删除,那么您可能会得到不同的顺序。使用不同的 Python 版本或不同的 Python 实现(IronPython、Jython、PyPy),您可能会得到完全不同的顺序。
-
@IndradhanushGupta:见Why the order in Python dictionaries is arbitrary?
-
随着最近 CPython 的变化,你甚至不需要改变任何东西。由于哈希随机化,只需使用相同的参数和相同的 Python 实现运行相同的程序可能会产生不同的顺序。
标签: python