在AWS Lambda中获取指定Name标签对应值的技术问题
在AWS Lambda中根据标签Key获取对应Value的可靠方法
你当前通过索引name = exported_json[2]['Value']取值的方式不可靠,因为标签的顺序不固定。可以通过以下几种可靠的方式,直接根据Key字段匹配来获取对应的Value:
方法1:循环遍历标签列表
这是最直观的方式,遍历每个标签字典,找到Key为Name的项:
tags = [{'Key': 'other', 'Value': 'other'}, {'Key': 'snstopic', 'Value': 'arn:aws:sns:us-west-2:123456789:TestEmail'}, {'Key': 'Name', 'Value': 'test-user'}] name_value = None for tag in tags: if tag['Key'] == 'Name': name_value = tag['Value'] break # 找到后name_value为'test-user',未找到则保持为None
方法2:用字典推导式转换为键值对字典
把标签列表转换成以Key为键、Value为值的普通字典,之后直接通过键名取值:
tags = [{'Key': 'other', 'Value': 'other'}, {'Key': 'snstopic', 'Value': 'arn:aws:sns:us-west-2:123456789:TestEmail'}, {'Key': 'Name', 'Value': 'test-user'}] tag_dict = {tag['Key']: tag['Value'] for tag in tags} name_value = tag_dict.get('Name') # 存在则返回'test-user',不存在返回None
这种方式适合需要多次通过不同Key取值的场景,转换一次后可反复使用。
方法3:使用next()函数快速匹配
如果只需要获取单个Key对应的Value,用next()函数可以一行完成:
tags = [{'Key': 'other', 'Value': 'other'}, {'Key': 'snstopic', 'Value': 'arn:aws:sns:us-west-2:123456789:TestEmail'}, {'Key': 'Name', 'Value': 'test-user'}] name_value = next((tag['Value'] for tag in tags if tag['Key'] == 'Name'), None)
第二个参数None是找不到对应Key时返回的默认值,可按需调整。
内容的提问来源于stack exchange,提问作者dragonmaster_admin
相关产品推荐
相关产品推荐

