You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python技术问题:将列表元素整合为单个嵌套Aggs字典

问题:将列表元素整合为单个嵌套字典结构

给定列表:

b = ["apple", "banana", "cherry"]

需要将列表中所有元素添加到字典中,生成一个单个嵌套字典结构。

原有代码:

b = ["apple", "banana", "cherry"]
c = []
def abc(key):
  a = {"aggs": { f"{key}" : { "filter": { "term": { "tag.name": f"{key}" } }, "aggs": { f"{key}_val": { "stats": { "field": "tag.value" } } } } } }
  c.append(a)

for item in b:
  abc(item)
c

当前输出(列表包含多个独立的aggs字典):

[{'aggs': {'apple': {'filter': {'term': {'tag.name': 'apple'}},
    'aggs': {'apple_val': {'stats': {'field': 'tag.value'}}}}}},
 {'aggs': {'banana': {'filter': {'term': {'tag.name': 'banana'}},
    'aggs': {'banana_val': {'stats': {'field': 'tag.value'}}}}}},
 {'aggs': {'cherry': {'filter': {'term': {'tag.name': 'cherry'}},
    'aggs': {'cherry_val': {'stats': {'field': 'tag.value'}}}}}}]

预期输出(单个嵌套字典,所有元素在同一个aggs下):

{"aggs":    {
                "apple" : {
                                "filter": { "term": { "tag.name": "apple" } },
                                "aggs": {
                                  "apple_val": { "stats": { "field": "tag.value" } }
                                }
                              },
                 
                "banana" : {
                                "filter": { "term": { "tag.name": "banana" } },
                                "aggs": {
                                  "banana_val": { "stats": { "field": "tag.value" } }
                                }
                              },
                   "cherry" : {
                                "filter": { "term": { "tag.name": "cherry" } },
                                "aggs": {
                                  "cherry_val": { "stats": { "field": "tag.value" } }
                                }
                              }

                  }
        }

解决方案

核心问题是原有代码每次生成独立的aggs字典并添加到列表中,而我们需要把所有元素的结构整合到同一个aggs字典的子键下。修改后的代码如下:

b = ["apple", "banana", "cherry"]
# 初始化最终的嵌套字典,顶层是aggs空字典
result = {"aggs": {}}

def build_agg(key):
    # 生成单个元素对应的子结构
    return {
        "filter": {"term": {"tag.name": key}},
        "aggs": {f"{key}_val": {"stats": {"field": "tag.value"}}}
    }

for item in b:
    # 将每个元素的结构添加到顶层aggs字典中,以item为键
    result["aggs"][item] = build_agg(item)

print(result)

改动说明

  1. 初始化结果字典:直接创建顶层为aggs的字典,替代原有的列表存储方式。
  2. 重构子结构生成逻辑:函数仅返回单个元素对应的嵌套结构,不再包含顶层的aggs键,避免重复生成独立字典。
  3. 循环填充目标字典:遍历列表时,将每个元素的结构作为值,以元素本身为键,直接添加到结果字典的aggs子字典中。

执行后即可得到预期的单个嵌套字典结构,所有元素都整合在同一个aggs层级下。


内容的提问来源于stack exchange,提问作者Divyank

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 08:15:32