2016-11-25 14 views
-4

私はちょうどPythonを学び始めて、2つの同一のキーをペアにすることが可能かどうか疑問に思っていましたか?辞書内の同一のキーを並べ替える

例:

my_dict= {1:a,3:b,1:c} 

と私は新しい辞書を作りたい、このような何か:あなたは、同一のキーを持つことができません助け

+1

元のdictは違法です(試してください)が、必要な結果が可能です。各dictエントリにリストを作成し、それに必要な値を含めることができます。 –

+0

ハッシュについてお読みください。それがどのようにして同一のキーを不可能にするか。 –

+0

最初に辞書にキーを重複させることはできません。 –

答えて

1

ため

new_dict= {1:{a,c},3:{b}} 

おかげで、その辞書の定義です。同じキーをもう一度追加するとすぐ前のエントリが削除されます

1

Pythonで繰り返しキーを使用することはできません。

0

Pythonの辞書、またはそのようなハッシュ可能な型は、重複するキーを許可しません。辞書に2つの重複キーが見つかった場合、辞書内の最も遠いキーが持続されます。この動作は、最初に手をobseveredすることができます。この問題に関するdict()のタッチのための

>>> my_dict= {1:'a',3:'b',1:'c'} 
>>> my_dict 
{1: 'c', 3: 'b'} 
>>> my_dict= {1:'c',3:'b',1:'a'} 
>>> my_dict 
{1: 'a', 3: 'b'} 
>>> 

ザ・Pythonドキュメント:

これは、キーの順不同のセットとして辞書を考えるのがベストです:valueのペア、 キーがユニークであることを条件に(1つの辞書内)[...]。

(強調鉱山)

1

私が理解から、次の2つの辞書を結合しようとしています。辞書の中に同じキーを持つことはできないので、組み合わせを得るために結合する2つの異なる辞書があるとします。

例:

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

dic2 = {'c': 4, 'd': 5, 'e': 6} 

及びこれらの組み合わせが生成するであろう:

{ 'A':{1}、 'B':{2}、 'C':{3,4}、 'D':{4}、 'E':{6}}

この例を使用することができる:

from itertools import chain 
from collections import defaultdict 

dic1 = {'A': 1, 'B': 2, 'C': 3} 
dic2 = {'C': 4, 'D': 5, 'E': 6} 

dic = defaultdict(set) 

for k, v in chain(dic1.items(), dic2.items()): 
    dic[k].add(v) 

print(dict(dic)) 

注意する何か:

  • 'dic'は正確にdict()ではなく、 'defaultdict'タイプですが、dict(dic)を使ってそのようにすることができます。
  • あなたは可能性の代わりにdefaultdict()の引数にセット、使用リストを使用しように辞書を持っている:

    { 'A':[1]、 'B':[2]、 'C' を:[3、4]、 'd':[4]、 'e':[6]

    dic [k] .append(v)はforループで使用されます。セットに項目を追加し、リストに追加します。

関連する問題