【问题标题】:Do dictionaries have a has key method? I'm checking for 'None' and I'm having issues字典有没有键的方法?我正在检查“无”,但我遇到了问题
【发布时间】:2010-08-02 23:48:57
【问题描述】:

我有 2 个字典,我想检查其中一个字典中是否有一个键。

我正在尝试:

if dic1[p.sku] is not None:

无论如何,我希望有一个 hasKey 方法。

如果找不到密钥,我会收到错误消息,这是为什么呢?

【问题讨论】:

    标签: python dictionary


    【解决方案1】:

    使用in 运算符:

    if p.sku in dic1:
        ...
    

    (顺便说一句,您也可以使用has_key 方法,但最好使用in。)

    【讨论】:

    • 您也可以对列表、元组和字符串执行此操作。
    【解决方案2】:

    他们这样做:

    if dic1.has_key(p.sku):
    

    【讨论】:

    • @gnibbler:这个问题没有说使用的是什么版本的python,所以答案是基于典型的广泛使用的2.6版本。
    • @banx,已弃用意味着它仍然存在以实现向后兼容性,但您通常不应该将它用于新代码。 in 多年来一直是首选方式
    【解决方案3】:

    if dic1.get(p.sku) is None: 与您正在尝试的完全等效,除了没有 KeyError - 因为如果密钥不存在,get 返回 None None 有显式存储为相应的值,这可以用作“逻辑删除”键而不实际更改键集的一种方式(如果您在 dict 上循环,则不能更改键集,也不是在没有锁等的情况下这样做是线程安全的线程安全)。

    除非您有这种要求,否则if p.sku not in dic1:,正如@Michael 所建议的那样,在所有方面都非常可取(更快、更简洁、更易读等等;-)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-03-30
      • 2018-09-02
      • 2017-10-12
      • 1970-01-01
      • 2013-08-15
      • 1970-01-01
      • 2021-11-01
      相关资源
      最近更新 更多