检查两个字典是否具有相同键的Pythonic方法?
比如说,我有两个字典:
d_1 = {'peter': 1, 'adam': 2, 'david': 3}
和
d_2 = {'peter': 14, 'adam': 44, 'david': 33, 'alan': 21}
那么,有什么聪明的方法可以检查这两个字典是否包含相同的键呢?在上面的例子中,结果应该是 False
,因为 d_2
包含了 'alan'
这个键,而 d_1
没有。
我并不关心它们对应的值是否相同,只想确认一下键是否一样。
6 个回答
13
在Python 3中,
dict.keys()
会返回一个“视图对象”,这个对象可以像集合一样使用。这样做比单独创建一个集合要高效得多。d_1.keys() == d_2.keys()
在Python 2.7中,
dict.viewkeys()
也有同样的功能。d_1.viewkeys() == d_2.viewkeys()
在Python 2.6及更早的版本中,你需要自己创建一个字典中所有键的集合。
set(d_1) == set(d_2)
或者你可以自己遍历这些键,这样可以更节省内存。
len(d_1) == len(d_2) and all(k in d_2 for k in d_1)
55
在Python2中,
set(d_1) == set(d_2)
在Python3中,你可以这样做,这可能比创建集合稍微高效一点
d1.keys() == d2.keys()
不过Python2的方法也可以用
49
你可以通过 dict.keys()
来获取字典里的所有键。
然后你可以用 set(dict.keys())
把这些键转换成一个集合。
你可以用 ==
来比较两个集合。
总的来说:
set(d_1.keys()) == set(d_2.keys())
这样就能得到你想要的结果。