如何在Python中打印未排序的字典?
我在Python里有一个字典;
d={}
d['b']='beta'
d['g']='gamma'
d['a']='alpha'
当我打印这个字典的时候;
for k,v in d.items():
print k
我得到的是这个;
a
b
g
看起来Python会自动对字典进行排序!我怎么才能得到原来的未排序列表呢?
Gath
5 个回答
6
别用普通的字典。要么就用Python 2.7或3.1里的OrderedDict
类型。
11
正如之前提到的,字典(dict)并不会按照你放入的顺序来排列里面的东西。当你取出这些东西时,它的顺序就像是“魔法”一样。如果你想保持某种顺序——无论是排序过的还是没排序的——你还需要用一个列表(list)或元组(tuple)来绑定。
这样做可以让你得到一个保持顺序的字典结果,配合一个列表:
greek = ['beta', 'gamma', 'alpha']
d = {}
for x in greek:
d[x[0]] = x
如果你不需要改变原来的列表或顺序,只需把方括号([])换成圆括号(())就可以了。
11
CPython 实现细节: 字典中的键和值是以一种非随机的顺序列出的,这个顺序不是固定的,会因不同的 Python 实现而异,并且还取决于字典的插入和删除历史。
你可以用一个包含二元组的列表来代替:
d = [('b', 'beta'), ('g', 'gamma'), ('a', 'alpha')]
还有一个类似但更好的解决方案可以在 Wayne 的回答 中找到。