Python dict.get()或无场景

Pro*_*ndy 0 python dictionary

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

dict = {}
dict['key'] = ''
test = dict.get('key')
print(test)
>>
Run Code Online (Sandbox Code Playgroud)

上面是预期的,并打印空字符串。但是现在看看如果不存在该键时我将dict.get()函数默认设置为None会发生什么

dict = {}
dict['key'] = ''
test = dict.get('key') or None
print(test)
>> None
Run Code Online (Sandbox Code Playgroud)

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

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

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

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

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

小智 5

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

dict.get(col, None)
Run Code Online (Sandbox Code Playgroud)

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


Dee*_*ace 5

您根本不需要or None。当在字典中找不到提供的键时,默认情况下dict.get返回None

在以下情况下,最好查阅文档

get(key [,默认])

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