如何检查字典中是否存在密钥?

ane*_*yzm 297 python

可能重复:
检查字典中是否已存在给定键

假设我有一个关联数组,如下所示:{'key1': 22, 'key2': 42}.

如何检查key1词典中是否存在?

Raf*_*cki 557

if key in array:
  # do something
Run Code Online (Sandbox Code Playgroud)

关联数组在Python中称为字典,您可以在stdtypes文档中了解有关它们的更多信息.

  • 并且,如果它是一个字符串,请确保将键名称放在引号中. (36认同)
  • @astroanu`如果键不在数组` (16认同)
  • "阵列"这个词在哪里来自这个答案? (7认同)
  • 随着接受的答案,这个是可怕的.它决不会回答问题,只不过是文档的居高临下的链接.令人遗憾的是,Google对此排名如此之高. (7认同)
  • @cstrutton请提出改进​​建议.在写这个答案的那一刻,我觉得不需要更多细节. (6认同)
  • @RafałRawicki我同意答案有点稀疏,不幸的是Google对该答案的评价如此之高。但这也不是你的错。您以您认为必要的方式进行了回答...话虽如此,我认为cstrutton的评论不是对您有用,而是在Google上有用。 (2认同)
  • 它完全回答了这个问题,@ cstrutton ...... (2认同)

gho*_*g74 59

另一种方法是has_key()(如果仍然使用Python 2.X):

>>> a={"1":"one","2":"two"}
>>> a.has_key("1")
True
Run Code Online (Sandbox Code Playgroud)

  • 不推荐使用`has_key`,在python 3中删除它,在python 2中删除一半 (24认同)
  • deprecated适用于所有新代码.一旦它被弃用,就不要再使用它了. (8认同)
  • 我们可以继续谈论这个,事实仍然是,它仍然是<= 2.5的替代选择. (8认同)
  • 是的,它在2.x中被弃用,是的,它在python 2.x中快了一半. (7认同)
  • 自2.2以来,"关键词"的形式已经存在 (5认同)
  • @rong甚至更简单,你可以使用`foo = mydict.get('foo', 'bar')`。“in”运算符调用“__contains__”,因此这更加冗长。 (2认同)

Mar*_*arc 48

如果要检索密钥的值(如果存在),也可以使用

try:
    value = a[key]
except KeyError:
    # Key is not present
    pass
Run Code Online (Sandbox Code Playgroud)

如果要在密钥不存在时检索默认值,请使用 value = a.get(key, default_value).如果要在密钥不存在的情况下同时设置默认值,请使用 value = a.setdefault(key, default_value).

  • 应该注意的是,如果您希望密钥在100%的时间内出现,您应该只使用`try/except`情况.否则,`if in`更漂亮,更有效率.+1提及其他可能性. (12认同)