我无法相信,但我被一项非常简单的任务所困扰.
我需要检查,如果值是在字典中的任何键或值.我可以找到密钥使用if 'A' in dictionary,但我似乎无法让它工作values.我意识到我可以使用for循环来做这个,我可以诉诸于此但我想知道是否有内置的方法.
您可以像这样使用in运算符和any函数
value in dictionary or any(value in dictionary[key] for key in dictionary)
Run Code Online (Sandbox Code Playgroud)
在这里,value in dictionary确保表达式被评估为Truthy,如果它value是其中一个键dictionary
any(value in dictionary[key] for key in dictionary)
Run Code Online (Sandbox Code Playgroud)
这部分确保value被搜索的是字典中的任何值.
注意:这种方法非常有效,因为
您不必在内存中创建任何其他列表
any 发现匹配后立即发生功能短路.
如果要确保要搜索的值应完全匹配,则可以将其更改in为==如此
value in dictionary or any(value == dictionary[key] for key in dictionary)
Run Code Online (Sandbox Code Playgroud)
正如DSM建议的那样,如果我们在Python 3.x中使用value in dict.itervalues()Python 2.x 会更好value in dict.values()