【发布时间】:2016-07-07 06:34:31
【问题描述】:
检查列表中的任何元素是否是字典中的键的 Pythonic 方法是什么?
例如,我有一份水果清单:
fruits = ['apples', 'bananas', 'pears']
并想检查任何水果是否是我字典中的键,示例:
fruit_dict1 = {'apples': 4, 'oranges': 3, 'dragonfruit': 4} returns True
fruit_dict2 = {'oranges': 3, 'dragonfruit': 9, 'pineapples': 4} returns False
到目前为止我有:
def fruit_checker(list, dict):
for fruit in list:
if fruit in dict:
return True
return False
只在字典“中”寻找水果感觉很奇怪,但似乎“在”中只搜索字典键。 “in”究竟是如何与不同类型一起工作的?
【问题讨论】:
-
如果
in完全符合您的要求,为什么会觉得奇怪? -
回答您的问题:请参阅docs.python.org/2/reference/datamodel.html#object.__contains__。简而言之,如果您的对象定义了
__contains__、__iter__或__getitem__,那么in运算符应该可以工作。由实施决定做一些明智的事情。对于dict,如果传递的值在键中,__contains__返回 True。
标签: python list dictionary