简单的方法找到2个字典之间的"关键"差异?

Sam*_*erg 6 python dictionary set set-difference

我需要比较2个字典,以便在一个字典中找到不在另一个字典中的密钥集.

我知道Python 设置对象支持:

set3=set1-set2
Run Code Online (Sandbox Code Playgroud)

但我做不到:

dict3=dict1-dict2
Run Code Online (Sandbox Code Playgroud)

要么:

missingKeys=dict1.keys()-dict2.keys()
Run Code Online (Sandbox Code Playgroud)

(我对最后一点感到有些惊讶,因为在Java中,键是一个Set对象.)一种解决方案是:

missingKeys=set(dict1.keys())-set(dict2.keys())
Run Code Online (Sandbox Code Playgroud)

有没有更好或更简洁的方法来做到这一点?

DSM*_*DSM 15

Python 2.7:

>>> d = {1:2, 2:3, 3:4}
>>> d2 = {2:20, 3:30}
>>> set(d)-set(d2)
set([1])
Run Code Online (Sandbox Code Playgroud)

Python 3.2:

>>> d = {1:2, 2:3, 3:4}
>>> d2 = {2:20, 3:30}
>>> d.keys()-d2.keys()
{1}
Run Code Online (Sandbox Code Playgroud)

  • @SamGoldberg:不,它实际上返回一个dict_keys对象,而不是一个集合,但它有许多类似集合的操作.参见,例如[this question](http://stackoverflow.com/questions/7296716/what-is-dict-keys-dict-items-and-dict-values). (2认同)

use*_*262 3

或许

[x for x in dict1.keys() if x not in dict2.keys()]
Run Code Online (Sandbox Code Playgroud)

  • 我认为这可能更简洁:“[x for x in dict1.keys() if x not in dict2]”,因为“x in dict.keys()”与“x in dict”相同 (2认同)