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

5 投票
5 回答
25647 浏览
提问于 2025-04-15 23:17

我在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 的回答 中找到。

撰写回答