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