【发布时间】:2011-08-29 00:24:06
【问题描述】:
当我声明一个列表 1,2,3,4 并对其进行处理时,即使只是打印,我也会返回相同的序列 1,2,3,4。
但是当我用字典做任何事情时,它们总是改变数字顺序,就像它以我无法理解的扭曲方式排序一样。
test1 = [4,1,2,3,6,5]
print test1
test2 = {"c":3,"a":1,"b":2,"d":4}
print test2
[4, 1, 2, 3, 6, 5]
{'a': 1, 'c': 3, 'b': 2, 'd': 4}
'a' 是如何成为第一个元素和 'c' 的,即使它按字母顺序对字典进行排序,它应该是 1,2,3,4 或 a,b,c,d 而不是 1,3 ,2,4 。 wT?F @!$!@$#@!
那么我如何打印,从字典中获取值而不改变元素的位置?
【问题讨论】:
-
为什么要关心字典键的保存顺序? “最好将字典视为 unordered 一组 key: value 对,并要求键是唯一的(在一个字典中)。”
-
我很在意,因为我需要精确的顺序才能在我的网络上显示一些内容,这是一种非常方便的方式,
for keys, values in dict.items()。现在它即将变得不是很好的解决方案,因为字典已经不适用了。 -
AFAIK,没有任何具有关联数组的语言默认维护插入顺序。这不是一个好主意,因为有几种行为是任意的(覆盖时会发生什么,删除和重新插入时会发生什么)。
-
我来自未来。它们现在是(在 Python 3.7+ 和 CPython 3.6+ 上)。
标签: python dictionary sequence