Как заполнить словарь в цикле?

Пытаюсь заполнить словарь из другого словаря в цикле.

for i in jsonData:
finalDict['executor'] = i['idMembers']

Но в итоге в словарь записывается только одно значение executor, хотя длина словаря "донора" намного больше. Проверяю это так:

print(json.dumps(finalDict, sort_keys=True, indent=4, ensure_ascii=False, separators=(",", ": ")))

Но, если в цикле добавить print(i['comments']) то в терминал выводятся все значение.

Как мне заполнить новый словарь всеми значениями? В итоге должно быть так:

[{"executor":"1"},{"executor":"2},{"executor":"3"},{...} }]

Ответы (3 шт):

Автор решения: greymaster

Если следовать вашим условиям, то такое решение должно подойти.

Здесь для каждого ключа создается отдельный словарь, позже словарь добавляется в список


jsonData = [{'idMembers': 1}, {'idMembers': 2}, {'idMembers': 3}]  # входные данные

finalDict = list()

for i in jsonData:
    finalDict.append({"executor": i['idMembers']})

print(finalDict)

→ Ссылка
Автор решения: greymaster

Также если же вам нужно чтобы был именно словарь, то можно использовать такое решение


jsonData = [{'idMembers': 1}, {'idMembers': 2}, {'idMembers': 3}]

finalDict = {}

for i in jsonData:
    if "executor" not in finalDict: # Проверка на наличие ключа
        finalDict["executor"] = list()

    finalDict["executor"].append(i["idMembers"])

print(finalDict)
# вывод {'executor': [1, 2, 3]}

→ Ссылка
Автор решения: TigerTV.ru

Можно покороче:

jsonData = [{'idMembers': 1}, {'idMembers': 2}, {'idMembers': 3}]
res = [{'executor': x['idMembers']} for x in jsonData]
print(res) # [{'executor': 1}, {'executor': 2}, {'executor': 3}]
→ Ссылка