在字典键上使用 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
对于我的程序,我希望清楚地检查列表中的任何元素是否是字典中的键。到目前为止,我只能考虑遍历列表并检查。
但是,有什么办法可以简化这个过程吗?有什么方法可以使用集合吗?通过集合,可以检查两个列表是否有共同的元素。
您可以使用 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