在字典中使用'if in'

Har*_*vey 4 python dictionary

我无法相信,但我被一项非常简单的任务所困扰.

我需要检查,如果值是在字典中的任何键或值.我可以找到密钥使用if 'A' in dictionary,但我似乎无法让它工作values.我意识到我可以使用for循环来做这个,我可以诉诸于此但我想知道是否有内置的方法.

the*_*eye 9

您可以像这样使用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被搜索的是字典中的任何值.

注意:这种方法非常有效,因为

  1. 您不必在内存中创建任何其他列表

  2. 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()

  • 我不认为你使用`in`的第一个答案与OP正在寻找的东西相匹配,而不是`any(value = = dictionary [key] for key in dictionary)``编写`value in Python 2中的dictionary.itervalues()`或3中的字典.值()中的值?为什么用genexp使用`any`? (2认同)