Python 如何测试dict中是否有三个键之一?

Python 如何测试dict中是否有三个键之一?,python,dictionary,contains,Python,Dictionary,Contains,如何测试a或b或c中的任何一个是否是dict中的键 Python中有一些简短的方法吗 有两把钥匙,我可以用 if a or b in my_dict.keys(): 如何使用三个键执行相同操作?您可以使用来检查任何条件是否为True。假设您的dict是: my_dict = { 'x': 1, 'y': 2, 'a': 3 # `a` key in dict } 要检查字典键中是否存在任何项,您可以执行以下操作: >>> values_to_check =

如何测试
a
b
c
中的任何一个是否是dict中的键

Python中有一些简短的方法吗

有两把钥匙,我可以用

if a or b in my_dict.keys():
如何使用三个键执行相同操作?

您可以使用来检查任何条件是否为
True
。假设您的
dict
是:

my_dict = {
  'x': 1,
  'y': 2,
  'a': 3   # `a` key in dict
}
要检查字典键中是否存在任何项,您可以执行以下操作:

>>> values_to_check = ['a', 'b', 'c']  # list of value to check
#                     v You do not need `.keys()` as by default `in` checks in keys 
>>> any(item in my_dict for item in values_to_check)
True

警告
如果my_dict.keys()中的a或b不符合您的想法:
。例如:

>>> 'a' or 'b' in {'c': 'd', 'e': 'f'}.keys()
'a'
实际发生的情况是:首先,计算
'a'
,如果是,则返回而不检查任何其他内容。只有当
'a'
为“falsy”时,
'b'
(并且只有
'b'
)才会根据dict的键进行检查

如果在代码中添加一些括号,Python的实际功能就会更加清晰:

if (a) or (b in my_dict.keys()):
实际上,您必须以这种风格编写两值版本的代码:

if a in my_dict.keys() or b in my_dict.keys():
    # ...
关于您的实际问题:

要测试任意数量的值(包括两个),您有两个选择:

if any(x in my_dict.keys() for x in (a, b, c)):
    # ...


你喜欢哪一个很大程度上取决于个人品味。。。尽管如果您需要实际的
True
False
结果,而不是在
if
语句中使用的“truthy”值,则需要
any(…)
解决方案。

否,您不能使用该代码;它根本不能满足您的需要。或者更简洁地说-
如果我的dict.keys()&values\u to\u check
。。。(或者
如果在Python 2.x中我的dict.viewkeys()和values\u to\u check
if my_dict.keys() & {a, b, c}:  # replace keys with viewkeys in Python 2
    # ...