在字典键上使用 set

Using set on Dictionary keys

对于我的程序,我希望清楚地检查列表中的任何元素是否是字典中的键。到目前为止,我只能考虑遍历列表并检查。

但是,有什么办法可以简化这个过程吗?有什么方法可以使用集合吗?通过集合,可以检查两个列表是否有共同的元素。

您可以使用 dict.keys:

测试字典键和列表项之间的交集
if the_dict.keys() & the_list:
    # the_dict has one or more keys found in the_list

演示:

>>> the_dict = {'a':1, 'b':2, 'c':3}
>>> the_list = ['x', 'b', 'y']
>>> if the_dict.keys() & the_list:
...     print('found key in the_list')
...
found key in the_list
>>>

注意在Python2.x中调用的方法是dict.viewkeys.

就效率而言,没有比遍历列表更高效的方法了。我还认为循环遍历列表已经是一个简单的过程。

使用内置 any 函数应该很容易:

any(item in dct for item in lst)

这快速、高效且(恕我直言)非常易读。还有什么比这更好的? :-)


当然,这并没有告诉你哪个键在字典中。如果你需要,那么你最好的办法是使用字典视图对象:

 # python2.7
 dct.viewkeys() & lst  # Returns a set of the overlap

 # python3.x
 dct.keys() & lst  # Same as above, but for py3.x