【问题标题】:Python safe dictionary key access [duplicate]Python安全字典键访问[重复]
【发布时间】:2018-05-29 16:31:34
【问题描述】:

我正在寻找一种方便、安全的 Python 字典键访问方法。我想到了以下 3 种方法。

data = {'color': 'yellow'}

# approach one
color_1 = None
if 'color' in data:
    color_1 = data['color']

# approach two
color_2 = data['color'] if 'color' in data else None


# approach three
def safe(obj, key):
    if key in obj:
        return obj[key]
    else:
        return None

color_3 = safe(data, 'color')

#output
print("{},{},{}".format(color_1, color_2, color_3))

当然,这三种方法都有效。但是有没有什么简单的开箱即用的方法来实现这一点,而不必使用多余的ifs 或自定义函数?

我认为应该有,因为这是很常见的用法。

【问题讨论】:

  • 您的意思是如果缺少密钥,您想返回默认值?然后使用dict.get()

标签: python dictionary logical-operators


【解决方案1】:

你错过了规范方法,dict.get()

color_1 = data.get('color')

如果缺少密钥,它将返回 None。您可以设置不同的默认值作为第二个参数:

color_2 = data.get('color', 'red')

【讨论】:

    【解决方案2】:

    查看dict.get()。如果在字典中找不到键,您可以提供要返回的值,否则将返回 None

    >>> data = {'color': 'yellow'}
    >>> data.get('color')
    'yellow'
    >>> data.get('name') is None
    True
    >>> data.get('name', 'nothing')
    'nothing'
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-01-07
      • 2014-04-14
      • 2020-05-12
      • 2018-02-07
      • 1970-01-01
      • 1970-01-01
      • 2019-02-05
      相关资源
      最近更新 更多