2

私はこれを持っています:

dict1 = defaultdict(lambda:defaultdict(list))
dict1['rl1']['sh1'] = ['a','b']
dict1['rl1']['sh2'] = ['c','d']
dict1['rl2']['sh1'] = ['c','d']

dict2 = defaultdict(lambda:defaultdict(list))
dict2['rl1']['sh1'] = ['p','q']
dict2['rl1']['sh3'] = ['r','s']
dict2['rl3']['sh1'] = ['r','s']

2 つの defaultdict を結合したいのですが、結果は次のようになります。

uniondict = defaultdict(lambda:defaultdict(list))
uniondict['rl1']['sh1'] = ['a','b','p','q']
uniondict['rl1']['sh2'] = ['c','d']
uniondict['rl1']['sh3'] = ['r','s']
uniondict['rl2']['sh1'] = ['c','d']
uniondict['rl3']['sh1'] = ['r','s']

この結果を取得する方法がわかりません.. dict1.items() と dict2.items() を使用するか、関数を更新しようとしましたが、「ユニオンを取得できないため、何かが欠けているに違いありません」 " defaultdicts.

4

2 に答える 2

4
dict12 = defaultdict(lambda:defaultdict(list))
for k,v in dict1.items():
    for k1,v1 in v.items():
        dict12[k][k1] = v1
for k,v in dict2.items():
    for k2,v2 in v.items():
        dict12[k][k2] += v2
for k,v in dict12.items():
    for k12,v12 in v.items():
        print "dict12[%r][%r] = %r" % (k,k12,v12)
于 2012-05-30T17:18:39.317 に答える