字典有 has key 方法吗?我在检查'None'时遇到问题
我有两个字典,我想检查一个键是否在这两个字典中的任意一个里。
我正在尝试:
if dic1[p.sku] is not None:
我希望有一个叫做 hasKey 的方法,不过无论如何。
如果找不到这个键,我会收到一个错误,为什么会这样呢?
3 个回答
0
这段代码 if dic1.get(p.sku) is None:
的意思和你想要的差不多,不过它不会出现 KeyError
错误。因为 get
方法在找不到对应的键时会返回 None
。这也意味着,如果这个键的值本身就是 None
,它也会返回 None
。这在某些情况下很有用,比如你可以用它来“逻辑上删除”一个键,而不是真的去改变键的集合(因为在遍历字典的时候,你不能改变键的集合,而且如果没有锁的话,这样做也不安全)。不过,把一个已经存在的键的值设为 None
是可以的,这在循环中是允许的,而且是线程安全的。
如果你没有这种特殊需求的话,正如 @Michael 所说,使用 if p.sku not in dic1:
会更好。这种写法在各个方面都更优秀(更快、更简洁、更易读等等)。
0
他们这样做:
if dic1.has_key(p.sku):
13