如何在python中打印未排序的字典?

时间:2010-05-28 11:52:12

标签: python dictionary

我在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进行排序!我怎样才能得到原始的未排序列表?

加特

5 个答案:

答案 0 :(得分:11)

Dicts don't work like that

  

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实现,和   取决于字典的历史   插入和删除。