Python: bir sözlük listesini json'a dönüştürme


85

Şunun gibi görünen bir sözlük listem var:

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

ve bunun gibi. Listede daha fazla belge olabilir. Bunları şişe ile iade edilebilen bir JSON belgesine dönüştürmem gerekiyor ve bunu nasıl yapacağımı anlayamıyorum. Lütfen yardım et. Bu web sitesinde benzer sorular gördüm ancak oradaki çözümleri anlayamadım.

Yanıtlar:


124

json kitaplığını kullan

import json
json.dumps(list)

bu arada, değişken listesini başka bir adla değiştirmeyi düşünebilirsiniz, listbir liste oluşturma için yerleşik işlevdir, değişken adını değiştirmezseniz bazı beklenmedik davranışlar veya bazı hatalı kodlar alabilirsiniz.


1
Tamam. Bu sadece bir örnek ve bunun için mylist adını kullanıyorum. Dumps () listeler için de çalışıyor mu? Sadece diktatörlükler için kullanılması gerektiğini sanıyordum.
Apoorv Ashutosh

Dosyayı JSON Column Array veya JSON row Array olarak kaydetmek mümkün müdür?
Anoop Toffy

NOT: listeyi yeniden atama (list = [1,2,3]) yerleşik yöntem listesi () ile çakışır. lütfen aklında bulundur.
nikhil swami

27
import json

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

Json Dosyasına yazın:

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

Json dosyasını okuyun:

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

NOT: listeyi yeniden atama (list = [1,2,3]) yerleşik yöntem listesi () ile çakışır. lütfen aklında bulundur.
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
Selam! Bu, OP'nin sorununu çözebilirken, genellikle yalnızca SO'ya kod yanıtları yazmak tavsiye edilmez. OP'nin daha iyi anlamasına yardımcı olacağı ve sitenin gelecekteki ziyaretçilerine fayda sağlayacağı için lütfen bunun neden soruna bir çözüm olduğuna dair biraz açıklama yapın. Teşekkürler!
d_kennetz

0

Belirli anahtar değerlerine sahip tek bir sözlüğe dönüştürmek için aşağıdaki kodu kullanabilirsiniz.

data = ListOfDict.copy()
PrecedingText = "Obs_"
ListOfDictAsDict = {}
for i in range(len(data)):
    ListOfDictAsDict[PrecedingText + str(i)] = data[i]
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.