【发布时间】:2010-05-28 11:52:12
【问题描述】:
我在 python 中有这个字典;
d={}
d['b']='beta'
d['g']='gamma'
d['a']='alpha'
当我打印字典时;
for k,v in d.items():
print k
我明白了;
a
b
g
似乎 python 会自动对 dict 进行排序!我怎样才能得到原始的未排序列表?
加特
【问题讨论】:
标签: python dictionary
我在 python 中有这个字典;
d={}
d['b']='beta'
d['g']='gamma'
d['a']='alpha'
当我打印字典时;
for k,v in d.items():
print k
我明白了;
a
b
g
似乎 python 会自动对 dict 进行排序!我怎样才能得到原始的未排序列表?
加特
【问题讨论】:
标签: python dictionary
CPython 实现细节:键和值以非随机的任意顺序列出,因 Python 实现而异,并且取决于字典的插入和删除历史。
您可以使用包含 2 元组的列表:
d = [('b', 'beta'), ('g', 'gamma'), ('a', 'alpha')]
Wayne's answer 中概述了类似但更好的解决方案。
【讨论】:
如前所述,dicts 不会对您放入的项目进行排序或排序。当您检索它时,它是如何排序的,这是“神奇的”。如果你想保持一个顺序 - 排序或不排序 - 你还需要绑定一个列表或元组。
这将为您提供与保留顺序的列表相同的 dict 结果:
greek = ['beta', 'gamma', 'alpha']
d = {}
for x in greek:
d[x[0]] = x
如果您不需要更改原始列表/顺序,只需将 [] 更改为 ()。
【讨论】:
dict 构造一个YAML 文件。我总是得到排序后的内容。
不要使用字典。或者使用 Python 2.7/3.1 OrderedDict 类型。
【讨论】:
字典中没有顺序可言,没有原始的未排序列表。
【讨论】:
dict
不,python 不会对 dict 进行排序,那样会太贵。 items() 的顺序是任意的。来自 python 文档:
CPython 实现细节:键 和值列在任意 顺序是非随机的,变化的 跨 Python 实现,以及 取决于字典的历史 插入和删除。
【讨论】: