這是我的示例 JSON 檔案。
[
{
"Sl No.": 1,
"Questions": "Who is known as ‘Father of computers’?",
"Option A": "A.Vannevar Bush",
"Option B": "B.Charles Babbage",
"Option C": "C.Howard Aiken",
"Option D": "D.John Atansoff",
"Answers": "Charles Babbage",
"Level" : 2
},
{
"Sl No.": 2,
"Questions": "Which among the following has low speed storage?",
"Option A": "A.CD-ROM",
"Option B": "B.Extended storage",
"Option C": "C.Magnetic disks",
"Option D": "D.Magnetic tapes",
"Answers": "Magnetic tapes",
"Level" : 1
}
]
我正在嘗試將它轉換成一個 python 字典,它應該有這樣的問答對:
dic ={"Who is known as ‘Father of computers’?": "Charles Babbage","Which among the following has low speed storage?": "Magnetic tapes" }
截至目前,我正在使用這種方法轉換為字典:
json_file = open("import.json")
data = json.load(json_file)
questions = []
answers = []
for i in range(len(data)):
questions.append(data[i]["question"])
for i in range(len(data)):
answers.append(data[i]["answer"])
easy = dict(zip(questions, answers))
在這里,我遍歷 JSON 檔案以查找問題和答案值并將它們附加到一個空串列中。然后我使用 zip 函式將這兩個串列轉換為字典。我知道這不是一個非常優化的方法,并且隨著我的應用程式擴展,我必須創建多個字典,我必須為每個字典創建 2 個串列,然后再次壓縮。有沒有更簡單更好的方法?謝謝
uj5u.com熱心網友回復:
您可以在這里使用字典理解,例如
result = {d["Questions"] : d["Answers"] for d in data}
請注意,我使用了示例中所示的鍵,而不是您的代碼中使用的鍵。
uj5u.com熱心網友回復:
如果不存在則使用get不會拋出錯誤,您可以傳遞第二個引數以在任何問題或答案鍵不存在的情況下回傳QuestionsAnswersgetthat value
final = {each_item.get('Questions'): each_item.get('Answers') for each_item in my_list}
uj5u.com熱心網友回復:
到達那里的方式有點迂回,但在 Python 3.8 中,您還可以使用 walrus:=語法結合簡單的dict理解:
data = [
{
"Sl No.": 1,
"Questions": "Who is known as ‘Father of computers’?",
"Option A": "A.Vannevar Bush",
"Option B": "B.Charles Babbage",
"Option C": "C.Howard Aiken",
"Option D": "D.John Atansoff",
"Answers": "Charles Babbage",
"Level" : 2
},
{
"Sl No.": 2,
"Questions": "Which among the following has low speed storage?",
"Option A": "A.CD-ROM",
"Option B": "B.Extended storage",
"Option C": "C.Magnetic disks",
"Option D": "D.Magnetic tapes",
"Answers": "Magnetic tapes",
"Level" : 1
}
]
result = {(v := list(d.values()))[1]: v[v[0] 2].split('.', 1)[-1]
for d in data}
print(result)
出去:
{'Who is known as ‘Father of computers’?': 'Charles Babbage', 'Which among the following has low speed storage?': 'Magnetic disks'}
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/412410.html
標籤:
