【问题标题】:Using try except to find if a key exist in dictionary使用 try except 来查找字典中是否存在键
【发布时间】:2018-08-10 00:59:33
【问题描述】:

我想知道查找 python 字典中是否存在键的最佳方法,而不是一次又一次地访问整个键列表。我正在考虑尝试除外。有没有更好的办法?

【问题讨论】:

  • 您需要提供更多背景信息。查找某个键是否在字典中的方法是 key in dict,因此完全不清楚您使用 try 和 except 和访问列表指的是什么。
  • 我对“没有一次又一次地访问整个键列表”有点迷失,请显示代码。否则,您可以使用my_dict.get(key),如果密钥不存在则返回None
  • 检查一个键是否在字典中是常数时间 O(1)
  • 如果您正在考虑尝试 catch 分配默认值,只需使用 @roganjosh 推荐的内容并使用默认关键字 arg:x = foo_dict.get(key, default='some default')

标签: python dictionary try-catch


【解决方案1】:

只需使用in 运算符:

print('some_key' in my_dict)

【讨论】:

    【解决方案2】:

    Pythonic 的方式是遵循EAFP(请求宽恕比许可更容易)原则。

    这意味着假设密钥在字典中,如果不是,则捕获异常,如下所示:

    my_dict = {"key": "value"}
    try:
        print my_dict["badkey"]
    except KeyError:
        print "No such key found"
    

    【讨论】:

      【解决方案3】:

      正如@Mureinik 提到的,您可以使用:

      key_name in dict
      

      返回真或假。但是,如果你非常想使用 try 和 except,你可以使用:

      try:
          x = dict[key_name]
      except KeyError:
          # Handle error here
      

      【讨论】:

        【解决方案4】:

        抱歉给大家带来了困惑。我知道我可以在 dict.keys() 中简单地使用 key_name。但是我必须搜索所有键才能知道该键是否存在。所以我在考虑尝试,除了上面那个。我的问题是,这是否是使用 try except 的好习惯?有没有其他方法可以达到不访问所有密钥的相同目的?

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2014-03-16
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2022-09-29
          • 2012-07-31
          相关资源
          最近更新 更多