比较两个字典的键,并创建一个字典,其键,值对与另一个字典中的键不匹配 - Python



我想比较dict_1dict_2之间的键,并创建一个仅包含不匹配键及其相应值的new_dict。我有两个这样的词:

dict_1 = {'a':'1', 'b':'1', 'c': None}
dict_2 = {'d': '1', 'a': '2'}

我希望输出如下所示:aa匹配,因此我希望将其排除在new_dict中。

new_dict = {'b':'1', 'c': None, 'd': '1'}

我试过这个:

new_dict = {}
for key in dict_1.items():
for key2 in dict_2.items():
if key == key2:

但我不确定如何从这里开始,或者这可能不是正确的方法。请帮忙!

您可以对dict.keys的结果执行类似集合的操作:

对于类似集合的视图,为抽象基类collections.abc.Set定义的所有操作都可用(例如,==<^)。

所以你可以做一些类似的事情

dict_1 = {'a':'1', 'b':'1', 'c': None}
dict_2 = {'d': '1', 'a': '2'}
keys = dict_1.keys() ^ dict_2.keys()
new_dict = {k: dict_1.get(k, dict_2.get(k)) for k in keys}

您需要获取每个字典的键,并找到唯一的键。我成套做了。看一看:

# your dictionaries
dict_1 = {'a':'1', 'b':'1', 'c': None}
dict_2 = {'d': '1', 'a': '2'}
# find their keys
dict_1_keys = set(dict_1.keys())
dict_2_keys = set(dict_2.keys())
# find unique keys
unique_keys = (dict_1_keys.union(dict_2_keys)) - (dict_1_keys.intersection(dict_2_keys))
dict_results = {}
for key in unique_keys:
if dict_1.get(key) is not None:
dict_results[key] = dict_1.get(key)
else:
dict_results[key] = dict_2.get(key)
print(dict_results)

最新更新