我在python中有这个dict;
d={}
d['b']='beta'
d['g']='gamma'
d['a']='alpha'
当我打印字典时;
for k,v in d.items():
print k
我明白了;
a
b
g
好像python会自动对dict进行排序!我怎样才能得到原始的未排序列表?
加特
答案 0 :(得分:11)
CPython实现细节:键和值以任意顺序列出,非随机,在Python实现中各不相同,并且取决于字典的插入和删除历史。
您可以使用带有2元组的列表:
d = [('b', 'beta'), ('g', 'gamma'), ('a', 'alpha')]
Wayne's answer概述了类似但更好的解决方案。
答案 1 :(得分:11)
正如已经提到的,dicts没有对您放入的物品进行排序或取消排序。当您检索它时,如何排序它是“神奇的”。如果你想保留订单 - 或者不是 - 你还需要绑定一个列表或元组。
这将为您提供相同的dict结果以及保留顺序的列表:
greek = ['beta', 'gamma', 'alpha']
d = {}
for x in greek:
d[x[0]] = x
如果您不需要更改原始列表/订单,只需将[]更改为()。
答案 2 :(得分:6)
不要使用字典。或者使用Python 2.7 / 3.1 OrderedDict
类型。
答案 3 :(得分:2)
字典中没有顺序可以说,没有原始未排序列表。
答案 4 :(得分:1)
不,python不排序dict,它太贵了。 items()
的顺序是任意的。来自python docs:
CPython实现细节:密钥 和值以任意方式列出 非随机的订单会有所不同 跨Python实现,和 取决于字典的历史 插入和删除。