#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}]}