AWS Lambda事件dict以非标准方式运行?

问题描述

考虑以下代码

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

给什么?为什么字典认参数在事件字典上不起作用?是否有我所缺少的最佳实践?

解决方法

这是字典中非常常见的行为,当该键存在

>>> 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