29

私はPythonが初めてで、Pythonで2つの辞書オブジェクトをマージする関数を作成しようとしています. 例えば

dict1 = {'a':[1], 'b':[2]}
dict2 = {'b':[3], 'c':[4]}

新しいマージ辞書を作成する必要がある

dict3 = {'a':[1], 'b':[2,3], 'c':[4]}

関数は、パラメータ「conflict」も受け取る必要があります (True または False に設定)。conflict が False に設定されている場合は、上記で問題ありません。conflict が True に設定されている場合、コードは代わりに次のように辞書をマージします。

dict3 = {'a':[1], 'b_1':[2], 'b_2':[3], 'c':[4]}

2 つの辞書を追加しようとしていますが、正しい方法で行う方法がわかりません。

for key in dict1.keys():
    if dict2.has_key(key):
        dict2[key].append(dict1[key])
4

2 に答える 2

3

私はあなたがこれを望んでいると思います:

dict1 = {'a':[1], 'b':[2]}
dict2 = {'b':[3], 'c':[4]}

def mergeArray(conflict):
    for key in dict1.keys():
        if dict2.has_key(key):
            if conflict==False:
                dict2[key].extend(dict1[key])
            else:
                dict2[key+'_1'] = dict1[key]
                dict2[key+'_2'] = dict2.pop(key)
        else:
            dict2[key] = dict1[key]

mergeArray(True);
print dict2
于 2013-11-08T15:21:45.073 に答える