簡體   English   中英

為什么使用 setdefault() 亂序創建這個 python 字典?

[英]Why does this python dictionary get created out of order using setdefault()?

我剛開始玩 Python(VBA 背景)。 為什么這本詞典會亂序創建? 不應該是 a: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}

或者,它是否只是亂序打印?

字典在python中沒有順序。 換句話說,當您遍歷字典時,鍵/項目“產生”的順序​​不是您將它們放入字典的順序。 (在不同版本的 python 上嘗試你的代碼,你可能會得到不同排序的輸出)。 如果你想要一個有序的字典,你需要一個collections.OrderedDict直到 python 2.7 才被引入。 如果您使用的是舊版本的 python,您可以在ActiveState上找到等效的方法。 然而,通常只對項目sorted(mydict.items())就足夠了(例如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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM