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

gat*_*ath 4 python dictionary

我在python中有这个词典;

d={}
d['b']='beta'
d['g']='gamma'
d['a']='alpha'
Run Code Online (Sandbox Code Playgroud)

当我打印字典;

for k,v in d.items():
    print k
Run Code Online (Sandbox Code Playgroud)

我明白了

a
b
g
Run Code Online (Sandbox Code Playgroud)

好像python会自动对dict进行排序!我怎样才能获得原始的未排序列表?

迦特

Ski*_*ick 11

Dicts不像那样工作:

CPython实现细节:键和值以任意顺序列出,这是非随机的,在Python实现中各不相同,并且取决于字典的插入和删除历史.

您可以使用包含2元组的列表:

d = [('b', 'beta'), ('g', 'gamma'), ('a', 'alpha')]
Run Code Online (Sandbox Code Playgroud)

Wayne的答案概述了类似但更好的解决方案.


Way*_*ner 11

如前所述,dicts不会对您放入的项目进行排序或取消排序.检索它时如何排序是"神奇的".如果您想保留订单 - 或者不是 - 您还需要绑定列表或元组.

这将为您提供相同的dict结果以及保留订单的列表:

greek = ['beta', 'gamma', 'alpha']
d = {}
for x in greek:
    d[x[0]] = x
Run Code Online (Sandbox Code Playgroud)

如果您不需要更改原始列表/订单,只需将[]更改为().


Mar*_*tos 6

不要使用字典.或者使用Python 2.7/3.1 OrderedDict类型.