【发布时间】:2012-11-13 12:42:05
【问题描述】:
我有这个完全工作的代码,但它的行为很奇怪:字典中的项目不是按顺序迭代而是随机迭代的,这是为什么呢?:
#!/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'}
【问题讨论】:
-
因为字典不是序列。它没有订单。
-
如果你真的想使用这个字典并打印它排序,你也可以使用:
print "{%s}" % (", ".join(["'%s': '%s'" % (k,v) for (k,v) in sorted(newDict.iteritems(),key=itemgetter(0))]))。顺便说一句,你也可以用newDict = dict([(k,k in moon and moon[k] or v) for (k,v) in lunar.iteritems()])构造newDict
标签: python dictionary