如何洗牌和合并两个词典?

2024-09-18 16:39:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两本不同长度的字典。我想把这两个字典都洗牌,然后合并它们。我一直在写逻辑,我需要一些算法方面的帮助。你知道吗

第一条格言

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

我怎样才能拿到最后的合并词典? 任何帮助都将不胜感激。你知道吗


Tags: 算法字典逻辑ad词典key2key1key3
3条回答

这里有一些代码,我相信它能满足你的需要。它通过对键字符串进行排序来对字典进行排序。我们可以使用^{} from itertools遍历bdict中的键。你知道吗

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

这样做有效:

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

可以使用以下步骤合并两个词典 z=x.复制() z、 更新(y)

相关问题 更多 >