Собрать json файл из нескольких словарей и списков

Необходимо собрать json файл из нескольких словарей и списков, дабы не плодить под каждую сущность отдельный файл с данными. Возможно ли такое? json.dumps отлично делает такие файлы, но с одной сущностью (словарем или файлом).

Попробовал банальную конструкцию, не сработало.

import json

capitals = {
    "Россия": "Москва",
    "Беларусь": "Минск",
    "Казахстан": "Нур-Султан"
}

capitals2 = {
    "Россия": "Москва",
    "Беларусь": "Минск",
    "Казахстан": "Нур-Султан"
}

capitals3 = list('Минск', 'Москва', 'Нур-Султан')


capitals_json = json.dumps(capitals, capitals2, capitals3 )

with open("capitals.json", "w") as my_file:
    my_file.write(capitals_json)

И если так можно сделать, то сможет ли программа работать с ними?

Что бы в итоге я мог получить:

{capitals = {
    "Россия": "Москва",
    "Беларусь": "Минск",
    "Казахстан": "Нур-Султан"
}

capitals2 = {
    "Россия": "Москва",
    "Беларусь": "Минск",
    "Казахстан": "Нур-Султан"
}

capitals3 = list('Минск', 'Москва', 'Нур-Султан')}

И вызывать каждую сущность из файла по имени.


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

Автор решения: Стас

Возможное решение:

Можно использовать keyword arguments и давать каждому объекту имя, которое будет отображено в json:

def dumpAll(**kwargs):
    return json.dumps(kwargs)

print(dumpAll(capitals=capitals, capitals2=capitals2, capitals3=capitals3))

Пример:

[Input]:

foo = {
    "a" : 2,
    "b" : 3
}

bar = ["cool_element", "even_cooler_element"]

print(dumpAll(foo=foo, spam=bar))

Output:

{
   "foo":{
      "a":2,
      "b":3
   },
   "spam":[
      "cool_element",
      "even_cooler_element"
   ]
}
→ Ссылка