2010-04-06 47 views
2

如果我有兩本詞典,我想在Python結合起來,即有沒有簡單的方法來「在Python中將兩個字典追加()」?

a = {'1': 1, '2': 2} 
b = {'3': 3, '4': 4} 

如果我在上面運行更新它重新排序列表:

a.update(b) 
{'1': 1, '3': 3, '2': 2, '4': 4} 

當我真正想要的是附加「 b」,以結束‘一’:

{'1': 1, '2': 2, '3': 3, '4': 4} 

是否有一個簡單的方法來連接‘b’,以結束‘一’,而無需手動將它們結合起來,像這樣:

for key in b: 
    a[key]=b[key] 

類似+ =或append()會是理想的,但當然不適用於字典。

+2

'update()'方法是「結合」字典的正確方法,所以也許你需要解釋爲什麼你想要你想要的東西......你真的有理由想要一個特定的字典順序,還是你只是因爲你看到的行爲而感到困惑,但是合併後的字典確實適合你? – 2010-04-06 16:05:37

+0

它現在有很多意義。我以爲字典有一個命令,其他人提到的命令是不正確的。 – digitaldreamer 2010-04-06 16:12:34

+0

如果順序對你很重要,你可以考慮一個元組列表而不是字典。否則,正如其他人所說,總是有OrderedDictionary。 – jemfinch 2010-04-06 20:52:28

回答

11

python字典沒有排序 - 如果在實踐中項目以特定順序出現,那純粹是特定實現的副作用,不應該依賴它。

+0

完美,非常感謝您的洞察力。 – digitaldreamer 2010-04-06 16:05:18

2

字典無序:它們沒有開始或結束。無論您使用的是update還是for循環,最終結果仍然是無序的。

如果您需要排序,請改爲使用元組列表。 Python 3.1有一個OrderedDict類型,它也將在Python 2.7中。

2

詞典沒有排序。如果你需要訂購,你可以嘗試一下列表。

0

我認爲你誤解了字典的使用。你不訪問序列或位置。你可以通過鍵盤訪問它們,在你的情況下它也是數字。他們是哈希表,應該像這樣工作。你做得對。

1

標準庫as of Python 3.1.1中有一個有序字典,但是它的用例是有限的。通常,如果您使用的是字典,您只需將鍵映射到值的映射,而不是命令。如果你沒有使用Python 3.x,你也可以先問自己,如果順序很重要,如果是的話,你是否使用正確的數據結構。

相關問題