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

如何检查字典中是否存在key1

评论

在python 3中,您可以仅在{'key1':22,'key2':42}中使用'key1'。keys()引用字典中的keys()方法

#1 楼

if key in array:
  # do something


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

评论


并且,如果密钥名称是字符串,请确保将其用引号引起来。

–日航
10-10-2在11:04

@astroanu,如果密钥不在数组中

–喷漆木
15年8月6日在14:38

这个答案中的“数组”一词从何而来?

– Ray Salemi
17年3月29日在17:19

按照公认的答案,这是可怕的。它绝不能回答问题,无非是文档的居高临下的链接。令人遗憾的是Google对此排名很高。

–cstrutton
17年7月12日在0:59

@cstrutton请提出改进​​建议。在撰写此答案时,我认为没有必要提供更多细节。

–拉斐·拉威克(RafałRawicki)
17年7月12日在11:13

#2 楼

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

>>> a={"1":"one","2":"two"}
>>> a.has_key("1")
True


评论


has_key已弃用,在python 3中已删除,在python 2中速度是后者的一半

–aaronasterling
2010年10月2日,11:10

是的,它在2.x中已弃用,是的,在python 2.x中是它的一半。

–aaronasterling
10-10-2在11:44

不推荐使用,适用于所有新代码。一旦不推荐使用,就不要再使用了。

–aaronasterling
2010年10月2日,12:40

自2.2起就存在“字典中的键”形式

– Tim W.
2010-10-2 13:01

我们可以继续进行下去,事实仍然存在,它仍然是<= 2.5的替代选项。

–ghostdog74
2010-10-2 14:15

#3 楼

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

try:
    value = a[key]
except KeyError:
    # Key is not present
    pass


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

评论


应该注意的是,仅当您期望密钥将以100%的时间出现时,才应使用try / except情况。否则,如果in更漂亮且更有效。 +1提及其他可能性。

–aaronasterling
10-10-2在13:37

有趣的是,我记得我在官方文档中的某处读到,寻求宽恕比获得许可要好...

–扬尼克·哈曼(Yannic Hamann)
20 Jan 15'在6:36

从性能的角度来看,如果您要处理具有很多键的字典,则try / expect会更好

– Avo Asatryan
20 Mar 3 '20 at 7:52