如何解析嵌套 json 对象的元素?

用户1903663

我有一个从 elasticsearch 查询返回的 json 对象,如下所示:

'took': 66, 'timed_out': False, '_shards': {'total': 1, 'successful': 1, 'skipped': 0, 'failed': 0}, 
'hits': {'total': {'value': 371, 'relation': 'eq'}, 'max_score': None, 'hits': []}, 'aggregations': {'council_response': {'doc_count_error_upper_bound': 0, 'sum_other_doc_count': 19, 'buckets': [{'key': 'Yes', 'doc_count': 86}, {'key': 'Refused', 'doc_count': 70}, {'key': 'no status available', 'doc_count': 68}, {'key': 'No', 'doc_count': 51}, {'key': 'Publicly available', 'doc_count': 26}, {'key': 'No Reply', 'doc_count': 13}, {'key': 'No ', 'doc_count': 12}, {'key': 'No reply', 'doc_count': 10}, {'key': 'Sort of', 'doc_count': 9}, {'key': 'Some stuff', 'doc_count': 7}]}}}

我想提取每个键的文档计数,所以我有 Yes - doc_count_number (Yes 86) 等等。

我把它缩小到:

[{'key': 'Yes', 'doc_count': 86}, {'key': 'Refused', 'doc_count': 70}, {'key': 'no status available', 'doc_count': 68}, {'key': 'No', 'doc_count': 51}, {'key': 'Publicly available', 'doc_count': 26}, {'key': 'No Reply', 'doc_count': 13}, {'key': 'No ', 'doc_count': 12}, {'key': 'No reply', 'doc_count': 10}, {'key': 'Sort of', 'doc_count': 9}, {'key': 'Some stuff', 'doc_count': 7}]

print(result['aggregations']['council_response']['buckets']),但我能得到没有进一步。我努力了

print(result['aggregations']['council_response']['buckets']['key']['Yes']['doc_count'])

这给出了错误TypeError: list indices must be integers or slices, not str如何进行最后一步来获取我需要的物品?

buckets = result['aggregations']['council_response']['buckets']
filter(lambda d: d['key'] in ['Yes', 'yes'], buckets)
print(buckets)

产生与上面较短的完全相同的 json 对象,如果我这样做,print(filter(lambda d: d['key'] in ['Yes', 'yes'], buckets))我会得到:<filter object at 0x7f7a380e3d90>

瓦尔

像这样尝试:

buckets = result['aggregations']['council_response']['buckets']
list(filter(lambda d: d['key'] in ['Yes', 'yes'], buckets))[0]['doc_count']

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章