2017-06-06 12 views
0

私は、キーごとに複数の値を持つ2つの辞書を持っているとしましょう:マージmulit値の辞書

Dict1 = { key1 : [value1,value2] } 
Dict2 = { key1 : [value3,value4], key2 : [value5,value6]} 

私はこのようなものの辞書にそれらをマージしたい:

mergedDict = { key 1 : [value1,value2,value3,value4], key 2 : [0,0,value5,value6] } 
+1

可能重複https://stackoverflow.com/questions/38987/how-to-merge-two-python-単一表現の辞書 – user3764893

+0

あなたはどんなコードを試しましたか? – thavan

+0

繰り返し値はどうですか? Dict1にkey1の値1があり、Dict2のkey1にvalue1がある場合、restultingディクショナリにkey1の値1が2回、またはkey1の値が1回あるかどうかを判定します。 –

答えて

2

ルー:とDict2はないDict1持つキーのpossibityをカバーpをキーの和集合の上に置き、dict.getをデフォルト値[0, 0]で使用します。

>>> dict1 = {'key1' : [1, 2]} 
>>> dict2 = {'key1' : [3, 4], 'key2' : [5, 6]} 
>>> 
>>> {k:dict1.get(k, [0, 0]) + dict2.get(k, [0, 0]) for k in dict1.viewkeys() | dict2.viewkeys()} 
{'key2': [0, 0, 5, 6], 'key1': [1, 2, 3, 4]} 
+0

答えてくれてありがとう、私はそれをテストするだけで受け入れます。 2つ以上の辞書に対してもう1つのリクエストを行うことができますか? 4つのような? –

+0

はチャームバディのように機能しますが、2つ以上の辞書で対応できますか? –

+0

@MohsinKhalidはい。しかし、パディングがどのように機能すべきかを明確にするルールが必要です。 1つの辞書にキーが見つからないときは常に2つのゼロがありますか? – timgeb

1

これはそれを行う必要があり、

Dict1 = {'key1': ['value1', 'value2'], 'key3': ['value7', 'value8']} 
Dict2 = { 'key1' : ['value3','value4'], 'key2' : ['value5', 'value6']} 

mergedDict = {k: [0, 0] + v if k not in Dict1 else Dict1[k] + v for k, v in Dict2.items()} 
mergedDict.update({i: j + [0, 0] for i, j in Dict1.items() if i not in Dict2}) 
#{'key3': ['value7', 'value8', 0, 0], 'key2': [0, 0, 'value5', 'value6'], 'key1': ['value1', 'value2', 'value3', 'value4']} 
+0

私は特定の状況に対してソリューションを提供しましたか?それは何が間違っていますか? – zipa

0

defaultdictで試してみてください:

from collections import defaultdict 
dict1 = { 'key1' : ['value1','value2'] } 
dict2 = { 'key1' : ['value3','value4'], 'key2' : ['value5','value6']} 
dict3 = defaultdict(list) 
for d1, d2 in dict1.items() + dict2.items(): 
    dict3[d1].extend(d2) 
dict(dict3) #convert defaultdict to dict 

出力:

{'key1': ['value1', 'value2', 'value3', 'value4'], 
'key2': ['value5', 'value6']} 
+0

期待どおりの結果が得られません。 – timgeb

+0

@timgebありがとうございました。 –

+0

期待どおりの出力が得られません。 OPは、キーが見つからないときにゼロでパディングしたい。 – timgeb

関連する問題