簡體   English   中英

Python:如何將列表字典轉換為JSON對象?

[英]Python: How to convert a dictionary of lists to a JSON object?

我是'json'庫的新手,無法將列表的字典轉換為JSON對象,下面是我得到的字典:

import json

data = {

     'title' : ['Seven days', 'Not Today', 'Bad Moms'],
     'date'  : ['July 17', 'Aug 18', 'Jan 19']

}

json_data = json.dumps(data)

print(json_data)

這是我得到的結果:

{"title" : ['Seven days', 'Not Today', 'Bad Moms'], "date" : ['July 17', 'Aug 18', 'Jan 19']}

如何以這種方式構造它:

{"title" : "Seven days","date" : "July 17"}, {"title" : "Not Today","date" : "Aug 18"}, {"title" : "Bad Mom","date" : "Jan 19"}

謝謝。

您可以像這樣轉換數據:

d = [{'title': t, 'date': d} for t, d in zip(data['title'], data['date'])]
#[{'title': 'Seven days', 'date': 'July 17'}, 
# {'title': 'Not Today', 'date': 'Aug 18'}, 
# {'title': 'Bad Moms', 'date': 'Jan 19'}]

將其轉儲到json將導致一些字符串,例如:

'[{"title": "Seven days", "date": "July 17"}, {"title": "Not Today", "date": "Aug 18"}, {"title": "Bad Moms", "date": "Jan 19"}]'

如果您希望json在每個對象中的鍵方面有保證的順序,則可以使用:

from collections import OrderedDict
d = [OrderedDict([('title', t), ('date', d)]) for t, d in zip(data['title'], data['date'])]

首先重組data

import json
data = {

 'title' : ['Seven days', 'Not Today', 'Bad Moms'],
 'date'  : ['July 17', 'Aug 18', 'Jan 19']

}
new_data = [{"title":i, "date":b} for i, b in zip(data["title"], data["date"])]
final_data = json.dumps(new_data)

輸出:

'[{"date": "July 17", "title": "Seven days"}, {"date": "Aug 18", "title": "Not Today"}, {"date": "Jan 19", "title": "Bad Moms"}]'

一個更強大的解決方案:

new_data = [dict(zip(data.keys(), i)) for i in zip(*data.values())]

請注意,上述解決方案最適合在Python2中使用,其中.keys().values()是有序的。

如果您想做長版,則可以執行此操作,只需將數據的兩個字段首先放在兩個列表中即可。

import json

data = {

     'title' : ['Seven days', 'Not Today', 'Bad Moms'],
     'date'  : ['July 17', 'Aug 18', 'Jan 19']

}

titles = data['title']
dates = data['date']

lst = list()

for i in range(len(titles)):
    a = dict()
    a["title"] = titles[i]
    a["date"] = dates[i]
    lst.append(a)

print json.dumps(lst)

輸出將如下所示:

[{"date": "July 17", "title": "Seven days"}, {"date": "Aug 18", "title": "Not Today"}, {"date": "Jan 19", "title": "Bad Moms"}]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM