python – 获得Boto3响应字典值的优雅方式

python – 获得Boto3响应字典值的优雅方式,第1张

概述我正在使用boto3向我描述我的管道.它以非常好奇的形式回复了一个回复 – {'ResponseMetadata': {'HTTPStatusCode': 200, 'RequestId': '2c42a320-c6ab-11e5-a021-afa8e3e7ca24'}, u'pipelineDescriptionList': [{u'fields': 我正在使用boto3向我描述我的管道.它以非常好奇的形式回复了一个回复 –

{'ResponseMetadata': {'httpStatusCode': 200,'RequestID': '2c42a320-c6ab-11e5-a021-afa8e3e7ca24'},u'pipelineDescriptionList': [{u'fIElds': [{u'key': u'key1',u'stringValue': u'AIDAIxxxxxxNWNI6I'},{u'key': u'key2',u'stringValue': u'2016-01-29T13:32:09'},{u'key': u'key3',u'stringValue': u'ABCD'},{u'key': u'key4',u'stringValue': u'PIPEliNE'}],u'name': u'ABCD',u'pipelineID': u'df-03442XXXXAZTRKE4NNK',u'Tags': []},{u'fIElds': [{u'key': u'key1',u'stringValue': u'2016-01-29T11:26:02'},u'stringValue': u'[{"key":"jobrun","value":"RzIN"},{"key":"env","value":"prod"}]'},u'stringValue': u'2016-01-29T11:25:20'},u'name': u'test-pipeline',u'pipelineID': u'df-006474936ZXRQ238Q70O',u'Tags': [{u'key': u'jobrun',u'value': u'RWssN'},{u'key': u'env',u'value': u'prod'}]}]}

现在我有兴趣获得管道’ABCD的key2值.如果我试图以最直观的方式获取它,它会变得非常混乱,因为我将不得不遍历每个pipelineDescriptionList列表项,遍历’fIElds’中的每个列表项,检查哪个键等于key2,并获取stringValue.

我的问题是,我们实际上是否期望处理这个烂摊子?或者是否有一些Python魔法可以让我的任务更优雅?

解决方法 一种选择是使用与boto3捆绑在一起的 jmespath.它是一个非常强大的工具,用于处理类似JsON的数据结构.

例如,如果您在上面显示的响应绑定到变量响应,则可以执行以下 *** 作:

jmespath.search("pipelineDescriptionList[?name == 'ABCD'].fIElds[] | [?key == 'key2'].stringValue",response)

将返回:

[u'2016-01-29T13:32:09']

可能有更好的方法来做到这一点,这只是快速切入它.您还可以编译这些表达式,以便使用相同的查询进行多次搜索,从而提高效率.

总结

以上是内存溢出为你收集整理的python – 获得Boto3响应字典值的优雅方式全部内容,希望文章能够帮你解决python – 获得Boto3响应字典值的优雅方式所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1193516.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-03
下一篇 2022-06-03

发表评论

登录后才能评论

评论列表(0条)

保存