我不需要这样的内容:
我需要这样的内容:
输入:
d1 = {'a': 'a', 'b': 'b'}
d2 = {'b': 'c', 'c': 'd'}
输出:
new_dict = {'a': ['a'], 'b': ['b', 'c'], 'c': ['d']}
我有以下代码可以运行,但我想知道是否存在更有效的方法:
首先,我创建了一个名为“unique_vals”的列表,其中存储了两个字典中都存在的所有值。 接下来,创建了一个新字典,其中存储了两个字典中都存在的所有值。
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)
for
循环,因为您只有2个输入字典;并且我考虑到了一个键可能存在于第二个字典中而不在第一个字典中的情况,并使用try/except处理了它。 - Mathieuappend
替换为extend
,并从value
中删除括号,因为您的值已经是列表;这样就可以工作了。 - Mathieu