2

可能重复:
为什么 python 像这样订购我的字典?

我有这个完全工作的代码,但它的行为很奇怪:字典中的项目不是按顺序迭代的,而是以某种方式随机迭代的,这是为什么呢?:

#!/usr/bin/python

newDict = {}
lunar = {'a':'0','b':'0','c':'0','d':'0','e':'0','f':'0'}
moon = {'a':'1','d':'1','c':'1'}

for il, jl in lunar.items():
    print "lunar: " + il + "." + jl 
    for im, jm in moon.items():
        if il == im:
            newDict[il] = jm
            break
        else:
            newDict[il] = jl

print newDict

输出:

lunar: a.0
lunar: c.0
lunar: b.0
lunar: e.0  
lunar: d.0
lunar: f.0
{'a': '1', 'c': '1', 'b': '0', 'e': '0', 'd': '1', 'f': '0'}
4

2 回答 2

5

字典不保存输入顺序。OrderedDict您可以从集合模块尝试类 - OrderedDict 示例和食谱

于 2012-11-13T12:42:54.703 回答
3

Pythondict未排序。出于性能原因,实现忘记添加项目的顺序会更有效。

正如文档所述

键和值以非随机的任意顺序列出,在 Python 实现中有所不同,并且取决于字典的插入和删除历史。

如果你需要一个有序的字典,你可以使用OrderedDict.

于 2012-11-13T12:44:20.623 回答