首页 > 解决方案 > AWS Lambda 事件字典以非标准方式表现?

问题描述

考虑以下代码:

def handle_lambda(event, context):
    multivalue_params = event.get('multiValueQueryStringParameters', {})
    print(multivalue_params)
    print(type(multivalue_params).__name__)
    print(type(event).__name__)

输出:

None
NoneType
dict

是什么赋予了?为什么字典默认参数不适用于事件字典?有没有我错过的最佳实践?

标签: pythonaws-lambdaaws-serverless

解决方案


该键存在时,这对于 dict 来说是非常正常的行为:

>>> event = {'multiValueQueryStringParameters': None}
>>> multivalue_params = event.get('multiValueQueryStringParameters', {})
>>> print(multivalue_params)
None
>>> print(type(multivalue_params).__name__)
NoneType
>>> print(type(event).__name__)
dict

dict.get仅当键根本不存在时返回默认参数。你可能想要这样的东西:

# be prepared for both non-existent keys and None values:
multivalue_params = event.get('multiValueQueryStringParameters') or {}

# or expect the key to exist but to potentially be None:
multivalue_params = event['multiValueQueryStringParameters']
if multivalue_params is not None:
    # process only in this case

推荐阅读