从另一个字典python中删除一个字典

thi*_*dam 2 python dictionary

如果 A 和 B 是两个字典,使用 python,有没有办法从字典 A 中删除字典 B 中的元素?

例如,

parent_dict = {"a" : "aaa", "b" : "bbb", "c" : "ccc", "d" : "ddd", "e": "eee"}
derived_dict = {"a" : "aaa", "d" : "ddd", "e" : "eee"}
Run Code Online (Sandbox Code Playgroud)

现在我需要编写一个函数 dict_reduce(dictA, dictB) 从 dictA 中删除 dictB 的所有元素。

(即) dict_reduce(parent_dict,derived_dict) 应该给 {"b" : "bbb", "c" : "ccc"}

我使用 for 循环的解决方法是:

def dict_reduce(parent_dict, child_dict):
    for key in child_dict.keys():
        del parent_dict[key]
    return parent_dict

reduced_dict = dict_reduce(parent_dict, child_dict)
Run Code Online (Sandbox Code Playgroud)

笔记:

  1. 如果解决方案是单行或不需要 for 循环的东西,那就太好了。
  2. 另外我们不需要在删除之前检查父字典是否有键,因为子字典是从父字典派生的。所以不用考虑keyError。
  3. 父字典是一个静态字典,不应受该方法的影响。相反,返回的字典应该存储在另一个简化的字典中。
  4. 无需检查 child_dict 是否与 parent_dict 的键相同。只有关键才重要。

DrT*_*rsa 8

{k: v for k, v in parent_dict.items() if k not in derived_dict}
Run Code Online (Sandbox Code Playgroud)


use*_*030 5

使用问题中提供的字典:
dict(parent_dict.items() - returned_dict.items()) 或
dict(parent_dict.items() ^ returned_dict.items())

  • 为您的代码添加一些上下文,以帮助未来的读者更好地理解其含义。 (2认同)