Сохранение данных JSON из списков в python

#python #json #python-3.x #list #dictionary

#питон #json #python-3.x #Список #словарь

Вопрос:

Я хочу автоматически сохранить некоторые данные в файле json. Вот мои данные:

 names = ['name1','name2','name3','name2']
number1 = [43,32,12,12]
number2 = [3,6,6,3]
dates = ['01.03.2021 13:05:59','01.03.2021 13:46:04','01.03.2021 14:05:59','01.03.2021 13:30:04']
 

То, что я хочу, это что-то вроде этого:

 {
    "items":[
        {
        "time": "01.03.2021 13:54:21",
        "name": "name1",
        "age": 43,
        "coins": 3
        },
        {
        "time": "01.03.2021 13:46:04",
        "name": "name2",
        "age": 32,
        "coins": 6
        }
        ...
    ]
}
 

Элементы для name1 имеют значение with [0] , name2 имеют их with [1] и т.д.)

И ключи или структура не имеют значения, это только должно иметь смысл.

Ответ №1:

Попробуйте сделать это в одной строке с помощью zip ():

 result = {'items':[{'time':i[0],'name':i[1], 'age':i[2], 'coins':i[3]} for i in zip(dates,names,number1,number2)]}
 

результатом будет:

 {'items': [
  {'time': '01.03.2021 13:05:59', 'name': 'name1','age': 43,'coins': 3},
  {'time': '01.03.2021 13:46:04', 'name': 'name2', 'age': 32, 'coins': 6},
  {'time': '01.03.2021 14:05:59', 'name': 'name3', 'age': 12, 'coins': 6},
  {'time': '01.03.2021 13:30:04', 'name': 'name2', 'age': 12, 'coins': 3}
]}
 

Ответ №2:

Просто создайте список словарей и используйте json для записи в файл:

 output = []
for name, num1, num2, date in zip(names, number1, number2, dates):
    dic = dict()
    dic["time"] = date
    dic["name"] = name
    dic["age"] = num1
    dic["coins"] = num2
    output.append(dic)

data = {"items": output}
import json
with open('out.json', 'w') as outfile:
    json.dump(data, outfile)
 

Примечание: dic объект может быть удален, но таким образом он выглядит читабельным.

Содержимое out.json :

 {"items": [{"time": "01.03.2021 13:05:59", "name": "name1", "age": 43, "coins": 3}, {"time": "01.03.2021 13:46:04", "name": "name2", "age": 32, "coins": 6}, {"time": "01.03.2021 14:05:59", "name": "name3", "age": 12, "coins": 6}, {"time": "01.03.2021 13:30:04", "name": "name2", "age": 12, "coins": 3}]}