【发布时间】:2025-11-27 14:50:01
【问题描述】:
我需要比较 2 个字典以在一个字典中找到另一个字典中没有的键集。
我知道 Python set 对象支持:
set3=set1-set2
但我做不到:
dict3=dict1-dict2
或:
missingKeys=dict1.keys()-dict2.keys()
(我对最后一点有点惊讶,因为在 Java 中,键是一个 Set 对象。)一种解决方案是:
missingKeys=set(dict1.keys())-set(dict2.keys())
有没有更好或更简洁的方法来做到这一点?
【问题讨论】:
-
我认为最后一行已经足够简洁了,但是......我想一个更有趣的问题是“如何从 X 中删除 Y 中的所有 z?”其中 X 和 Y 是列表。例如,如果 X 中存在重复的 z 而确实出现在 Y 中,这将很有用。
-
@pst:嗯,创建集合对象感觉有点奇怪,只是为了利用differ()函数...
-
另一方面,因为它是一个集合,它可以利用更好的 O ... 使用理解来处理列表差异,但有点啰嗦。不过,如果将“探测”列表转换为
set,性能仍然相同。
标签: python dictionary set set-difference