我有两个不同长度的词典。我想要将两个词典混合并合并它们。我坚持为同样的逻辑写作我需要一些算法帮助。
第一个词典
a = {
'key1' : {'video1' : 'url1'},
'key2' : {'video2' : 'url2'},
'key3' : {'video3' : 'url3'}
}
第二个词典
b = {'ad_video1' : 'url1', 'ad_video2' : 'url2'}
所需的输出
c = {
'key1': {
'video1' : 'url1',
'ad_video1' : 'url1'
},
'key2': {
'video2' : 'url2',
'ad_video2' : 'url2'
},
'key3': {
'video3' : 'url3',
'ad_video1' : 'url1'
}
}
如何获得最终合并的字典? 任何帮助将不胜感激。
答案 0 :(得分:1)
以下是我认为可以满足您需求的一些代码。它通过对键字符串进行排序将命令强加到字典上。我们可以使用cycle
from itertools在b
字典中循环显示密钥。
from itertools import chain, cycle
from pprint import pprint
a = {
'key1': {'video1' : 'url1'},
'key2': {'video2' : 'url2'},
'key3': {'video3' : 'url3'}
}
b = {'ad_video1': 'url1', 'ad_video2': 'url2'}
c = {}
for k1, k2 in zip(sorted(a.keys()), cycle(sorted(b.keys()))):
c[k1] = a[k1].copy()
c[k1][k2] = b[k2]
pprint(c)
<强>输出强>
{'key1': {'ad_video1': 'url1', 'video1': 'url1'},
'key2': {'ad_video2': 'url2', 'video2': 'url2'},
'key3': {'ad_video1': 'url1', 'video3': 'url3'}}
答案 1 :(得分:0)
您可以使用以下步骤合并两个词典 z = x.copy() z.update(y)的
答案 2 :(得分:0)
这有效:
dct = {}
for key1,value1 in a.items():
for key2,value2 in b.items():
dct[key1] = value1
if key2.endswith(key1[-1:]) and value2.endswith(key1[-1:]):
dct.get(key1)[key2] = value2