2017-03-17 107 views
-2

例如,我有:如何避免覆蓋字典追加?

dic={'a': 1, 'b': 2, 'c': 3} 

現在,我想另一個'c':4加入到字典中。它會覆蓋現有的'c':3

我怎麼能拿dic像:

dic={'a': 1, 'b': 2, 'c': 3, 'c':4} 
+6

在字典中不能有兩次鍵......您會如何查看它? 'dic ['c']'會返回什麼? – mgilson

+0

也許[multidict](https://pypi.python.org/pypi/multidict)可能是您要查找的數據類型。 –

+0

使詞典中的值全部爲列表。這樣,您可以將多個值與每個字典關鍵字(必須每個都是唯一的)相關聯。 – martineau

回答

2

字典鍵必須是唯一的。但是你可以有一個列表作爲一個值,所以你可以存儲多個值。這可以通過使用collections.defaultdict來完成,如下所示。 (從IPython會話複製的示例)

In [1]: from collections import defaultdict 

In [2]: d = defaultdict(list) 

In [3]: d['a'].append(1) 

In [4]: d['b'].append(2) 

In [5]: d['c'].append(3) 

In [6]: d['c'].append(4) 

In [7]: d 
Out[7]: defaultdict(list, {'a': [1], 'b': [2], 'c': [3, 4]}) 
+0

非常感謝!這正是我需要的 – user815408

0

你不能有一個字典中重複的鍵 - 你所期望的行爲,當你試圖尋找的東西了?但是,您可以將列表與鍵關聯以存儲多個對象。字典結構中的這一小改動將允許{'c' : [3, 4]},它最終完成您正在尋找的行爲。