2017-03-17 16 views
-2

は例えば、私が持っている:辞書追加の上書きを避けるにはどうすればよいですか?

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

今、私は別の'c':4が辞書に追加したいと思います。既存の'c':3を上書きします。

は、どのように私のようなdicを得ることができます:

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

キーを辞書に2回置くことはできません。どのように見上げますか? '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]}が可能になり、最終的にはあなたが探している振る舞いを実現します。

関連する問題