Python 字典有has键方法吗?I';我正在检查';无';而我';我有问题

Python 字典有has键方法吗?I';我正在检查';无';而我';我有问题,python,dictionary,Python,Dictionary,我有两个字典,我想检查两个字典中是否有一个键 我正在努力: if dic1[p.sku] is not None: 不管怎样,我希望有一个hasKey方法 如果找不到钥匙,我会收到一个错误,原因是什么?使用中的操作符: if p.sku in dic1: ... (顺便说一句,您也可以使用该方法,但最好在中使用。它们可以: if dic1.has_key(p.sku): 如果dic1.get(p.sku)为None:与您正在尝试的完全相同,除了noKeyError——因为get返回

我有两个字典,我想检查两个字典中是否有一个键

我正在努力:

if dic1[p.sku] is not None:
不管怎样,我希望有一个hasKey方法


如果找不到钥匙,我会收到一个错误,原因是什么?

使用
中的
操作符:

if p.sku in dic1:
    ...
(顺便说一句,您也可以使用该方法,但最好在
中使用

它们可以:

if dic1.has_key(p.sku):
如果dic1.get(p.sku)为None:
与您正在尝试的完全相同,除了no
KeyError
——因为
get
返回
None
如果密钥不存在或者
None
已显式存储为相应的值,这对于“逻辑删除”非常有用没有实际更改密钥集的密钥(如果在dict上循环,则无法更改密钥集,在没有锁等的情况下更改密钥集也不是线程安全的,而在循环和线程安全中允许将值
None
分配给已存在的密钥)


除非您有这种要求,
如果p.sku不在dic1中:
,正如@Michael所建议的,在所有平面上都是非常可取的(更快、更简洁、更可读等等;-)。

您也可以对列表、元组和字符串这样做。@gnibbler:问题没有说使用哪种版本的python,所以答案是基于广泛使用的典型版本2.6。@banx,deprecated意味着它仍然存在向后兼容性,但您通常不应该在新代码中使用它<多年来,代码>在
中一直是首选方式