为什么这个Python字典得到存在使用它创建无序()?(Why does this python d

2019-06-17 15:05发布

我刚开始玩弄的Python(VBA背景)。 为什么这本词典获得创建出故障? 它不应该是:1,B:2 ...等?

class Card:
def county(self):
    c = 0
    l = 0
    groupL = {}  # groupL for Loop
    for n in range(0,13):
        c += 1
        l = chr(n+97)
        groupL.setdefault(l,c)
    return groupL

pick_card = Card()
group = pick_card.county()
print group

这里的输出:

{'a': 1, 'c': 3, 'b': 2, 'e': 5, 'd': 4, 'g': 7, 'f': 6, 'i': 9, 'h': 8, 'k': 11, 'j': 10, 'm': 13, 'l': 12}

或者,它一下就打印出来的订单?

Answer 1:

字典有蟒蛇没有秩序。 换句话说,当你遍历一个字典,该键/项目“产生”的顺序​​是不是你把它们放进字典顺序。 (尝试在不同版本的Python代码,你很可能会得到不同的有序输出)。 如果你想要的是有序的字典,你需要一个collections.OrderedDict这是没有出台,直到蟒蛇2.7。 你可以找到相当的食谱ActiveState ,如果你使用python的旧版本。 然而,往往是不够好,只是对项目进行排序(如sorted(mydict.items())

的要求,一个OrderedDict示例编辑

from collections import OrderedDict
groupL = OrderedDict()  # groupL for Loop
c = 0
for n in range(0,13):
    c += 1
    l = chr(n+97)
    groupL.setdefault(l,c)

print (groupL)


文章来源: Why does this python dictionary get created out of order using setdefault()?