python-3.x 通过获取列表中存在的元素创建新字典,并在字典中继续追加元素

lqfhib0f  于 2022-12-05  发布在  Python
关注(0)|答案(1)|浏览(102)

我有单子:b = ["apple", "banana", "cherry"]
我需要添加list中存在的所有元素,并通过将其追加到现有字典中来创建新字典。
我的代码:

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': {'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":    {
                "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" } }
                                }
                              }

                  }
        }
r7s23pms

r7s23pms1#

试试看:

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

out = {
    "aggs": {
        fruit: {
            "filter": {"term": {"tag.name": fruit}},
            "aggs": {f"{fruit}_val": {"stats": {"field": "tag.value"}}},
        }
        for fruit in b
    }
}

print(out)

印刷品:

{
    "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"}}},
        },
    }
}

相关问题