python - 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
是什么赋予了?为什么字典默认参数不适用于事件字典?有没有我错过的最佳实践?
解决方案
当该键存在时,这对于 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
推荐阅读
- java - 使用 ScriptRunner“runScript”方法时,如果一个插入失败则回滚
- javascript - 如果路由以斜线结尾,则找不到 Next.js 页面
- c# - Unity apk 在没有 USB 调试的情况下无法工作
- jquery - 滑块循环和悬停时暂停
- css - CSS 选择器查询
- mysql - 选择每个优惠的优惠券价格的最大折扣百分比
- c++ - C++ 浮点数差
- php - 我想在我的映射数组中添加一个新的 segmentId(同名),但 elementId 不同但方法相同
- html - 如何根据导航栏中的左右元素对齐li元素
- java - 为什么抑制功能不适用于跳跃窗口?