Python dict.get() 或 None 场景

新手上路,请多包涵

我正在尝试根据我拥有的键列表访问字典的值。如果密钥不存在,我默认为无。但是,当值为空字符串 “ 时,我遇到了麻烦。请参阅下面的代码以获取我的示例

dict = {}
dict['key'] = ''
test = dict.get('key')
print(test)
>>

如上所示,打印了空字符串。但是现在看看如果密钥不存在,当我将 dict.get() 函数默认为 None 时会发生什么

dict = {}
dict['key'] = ''
test = dict.get('key') or None
print(test)
>> None

为什么会这样?在第二个示例中,密钥存在,所以我的直觉是应该打印 ” 。 Python 如何应用该行代码的“或”子句?

下面是我用来访问我的字典的实际代码。请注意,字典中的许多键都有 “ 作为值,因此我的问题。

 # build values list
params = []
for col in cols:
    params.append(dict.get(col) or None)

有人可以提供最佳解决方案吗?我目前的解决方案如下,但我认为这不是最干净的选择

# build values list
params = []
for col in cols:
    if dict.get(col) is not None:
        params.append(dict.get(col))
    else:
        params.append(None)

原文由 ProgrammingWithRandy 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.4k
2 个回答

您根本不需要 or Nonedict.get 返回 None 在字典中找不到提供的键时默认返回。

在这些情况下查阅 文档 是个好主意:

得到(键[,默认])

如果键在字典中,则返回键的值,否则返回默认值。 如果未给出默认值,则默认为 None ,因此此方法永远不会引发 KeyError。

原文由 DeepSpace 发布,翻译遵循 CC BY-SA 4.0 许可协议

您可以简单地使用 get 的第二个参数。

 dict.get(col, None)

第二个参数是找不到密钥时的默认值。 The or 在那种情况下取 or 之前的东西,如果它是某物,否则取 or 之后的任何东西。

原文由 Matthias Schreiber 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题