Python: перетворення списку словників у json


85

У мене є список словників, що виглядає приблизно так:

list = [{'id': 123, 'data': 'qwerty', 'indices': [1,10]}, {'id': 345, 'data': 'mnbvc', 'indices': [2,11]}]

і так далі. У списку може бути більше документів. Мені потрібно перетворити їх в один документ JSON, який можна повернути через пляшку, і я не можу зрозуміти, як це зробити. Будь ласка, допоможіть. Я бачив подібні запитання на цьому веб-сайті, але я не міг зрозуміти рішення там.

Відповіді:


124

використовувати бібліотеку json

import json
json.dumps(list)

до речі, ви можете розглянути можливість зміни списку змінних на інше ім'я, listце вбудована функція для створення списку, ви можете отримати деякі несподівані способи поведінки або код помилки, якщо не зміните ім'я змінної.


1
Добре. Це лише зразок, і для цього я використовую назву mylist. Чи дампи () працюють і для списків? Я думав, що його слід було використовувати лише для диктування.
Апоорв Ашутош

Чи можна зберегти файл як масив стовпців JSON або масив рядків JSON?
Ануп Тоффі

ПРИМІТКА: повторне призначення списку (list = [1,2,3]) конфліктує зі вбудованим списком методів (). будь ласка, майте на увазі.
nikhil swami

27
import json

list = [{'id': 123, 'data': 'qwerty', 'indices': [1,10]}, {'id': 345, 'data': 'mnbvc', 'indices': [2,11]}]

Запис у файл JSON:

with open('/home/ubuntu/test.json', 'w') as fout:
    json.dump(list , fout)

Прочитайте файл Json:

with open(r"/home/ubuntu/test.json", "r") as read_file:
    data = json.load(read_file)
print(data)
#list = [{'id': 123, 'data': 'qwerty', 'indices': [1,10]}, {'id': 345, 'data': 'mnbvc', 'indices': [2,11]}]

ПРИМІТКА: повторне призначення списку (list = [1,2,3]) конфліктує зі вбудованим списком методів (). будь ласка, майте на увазі.
nikhil swami

1
response_json = ("{ \"response_json\":" + str(list_of_dict)+ "}").replace("\'","\"")
response_json = json.dumps(response_json)
response_json = json.loads(response_json)

2
Привіт! Хоча це може вирішити проблему OP, зазвичай не рекомендується писати відповіді лише на код на SO. Будь ласка, надайте пояснення, чому це рішення проблеми, оскільки це допоможе ОП краще зрозуміти та принесе користь майбутнім відвідувачам сайту. Дякую!
d_kennetz

0

Щоб перетворити його в єдиний словник із визначеним значенням ключів, ви можете скористатися наведеним нижче кодом.

data = ListOfDict.copy()
PrecedingText = "Obs_"
ListOfDictAsDict = {}
for i in range(len(data)):
    ListOfDictAsDict[PrecedingText + str(i)] = data[i]
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.