我做我的问题是错误在这里(错误的请求的输入和预期的输出): 比较类型的字典,更新不是覆盖值

我不是在寻找这种解决方案: 结合2点字典与公共密钥 所以,这个问题是不是重复

问题陈述:

请输入:

d1 = {'a': ['a'], 'b': ['b', 'c']}
d2 = {'b': ['c', 'd'], 'c': ['e','f']}

预期输出(我不关心键/值的顺序!):

new_dict = {'a': ['a'], 'b': ['b', 'c', 'd'], 'c': ['e', 'f']}

结合2点字典与公共密钥解决方案 给出以下的输出:

new_dict = {'a': ['a'], 'b': ['b', 'c', 'c', 'd'], 'c': ['e', 'f']}

我不希望存储的重复。

我的解决方案(它的工作原理,但它不是那么有效):

unique_vals = []
new_dict = {}
for key in list(d1.keys())+list(d2.keys()) :
    unique_vals = []
    try:
        for val in d1[key]:
            try:
                for val1 in d2[key]:
                    if(val1 == val) and (val1 not in unique_vals):
                        unique_vals.append(val)
            except:
                continue
    except:        
        new_dict[key] = unique_vals
    new_dict[key] = unique_vals


for key in d1.keys():
    for val in d1[key]:
        if val not in new_dict[key]:
            new_dict[key].append(val)
for key in d2.keys():
    for val in d2[key]:
        if val not in new_dict[key]:
            new_dict[key].append(val)
分析解答

这是我会怎么做呢:

d1 = {'a': ['a'], 'b': ['b', 'c']}
d2 = {'b': ['c', 'd'], 'c': ['e','f']}
dd1 = {**d1, **d2}
dd2 = {**d2, **d1}
{k:list(set(dd1[k]).union(set(dd2[k]))) for k in dd1}

产生期望的结果。