如何改组和合并两个词典?

时间:2017-11-03 09:23:35

标签: python dictionary logic

我有两个不同长度的词典。我想要将两个词典混合并合并它们。我坚持为同样的逻辑写作我需要一些算法帮助。

第一个词典

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'
    }
}

如何获得最终合并的字典? 任何帮助将不胜感激。

3 个答案:

答案 0 :(得分:1)

以下是我认为可以满足您需求的一些代码。它通过对键字符串进行排序将命令强加到字典上。我们可以使用cycle from itertoolsb字典中循环显示密钥。

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