Как заполнить словарь в цикле?
Пытаюсь заполнить словарь из другого словаря в цикле.
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}]