空字典作为 dict.get() 的默认值

Gro*_*ppe 3 python dictionary default

我试图传递一个空字典作为调用.get()另一个字典的默认返回值。

queryStringParameters = event.get('queryStringParameters', ({})
size = queryStringParameters.get('size', 25)
Run Code Online (Sandbox Code Playgroud)

但是,queryStringParameters.get(...)会引发错误,指出 queryStringParameters 为None

'NoneType' object has no attribute 'get': AttributeError
Traceback (most recent call last):
File "/var/task/api/game.py", line 13, in all
size = queryStringParameters.get('size', 25)
AttributeError: 'NoneType' object has no attribute 'get'
Run Code Online (Sandbox Code Playgroud)

这是不可能的,还是我做错了什么?我也尝试了以下方法:

queryStringParameters = event.get('queryStringParameters', dict())
Run Code Online (Sandbox Code Playgroud)

Mik*_*tty 8

有可能event实际上包含一个queryStringParameters恰好是None. 您是否检查过密钥是否存在?

仅当键不存在时才返回默认值,如果它存在并且恰好是 None 则不返回。

但是你也可以写

queryStringParameters = event.get('queryStringParameters', {}) or {}
Run Code Online (Sandbox Code Playgroud)

为了安全起见。