json文件中每一条数据5个选项随机去掉一个错误选项,剩余选项重新排序
json格式的数据集中含有5个选项,随机去掉一个错误选项,剩余选项重新排序。
数据集示例:
[
{
"context": "由于饮食中的高脂肪含量,新加坡人的心血管疾病的发病率也逐年上升。",
"question": "从上述断定,最可能推出以下哪项结论",
"A": "新加坡人的心血管疾病的发病率虽然逐年上升,但这种疾病不是造成目前新加坡人死亡的主要杀手",
"B": "目前,新加坡对于心血管病的治疗水平是全世界最高的",
"C": "20世纪60年代造成新加坡人死亡的那些主要疾病,到21世纪,如果在该国的发病率没有实质性的降低,那么对这些疾病的医治水平一定有实质性的提高",
"D": "目前,新加坡人心血管疾病的发病率低于日本",
"E": "新加坡人比日本人更喜欢吃脂肪含量高的食物",
"answer": "C"
},
{
"context": "有人养了一些兔子。别人问他有多少只雌兔,多少只雄兔?他答:在他所养的兔子中,每只雄兔的雌性同伴比它的雄性同伴少1只:而每只雌兔的雄性同伴比它的雌性同伴的两倍少2只",
"question": "根据上述回答,可以判断他养了多少只雌兔?多少只雄兔",
"A": "8只雄兔,6只雕兔",
"B": "10只雄兔,8只雌兔",
"C": "12只雄兔,10只雌兔",
"D": "14只雄兔,8只雌兔",
"E": "14只雄兔,12只雌兔",
"answer": "A"
}
]
目的:例如第一题,正确答案为C,除正确答案外,我想随机去掉一个错误选项。
例如:去掉错误A选项,那么剩下的BCDE选项应该变为ABCD选项;如果去掉错误选项D选项,那么剩下的ABCE选项应该变为ABCD选项。
import os
import random
import json
import string
path = "test.json"
file = open(path, encoding='utf-8')
jsondata = json.load(file)
json_all = []
json_new = []
for i in range(len(jsondata)):
right_answer = jsondata[i]['answer'] #读取正确答案
dicta = {"A": "0",
"B": "1",
"C": "2",
"D": "3",
"E": "4"}
all_answer = ["A", "B", "C", "D", "E"]
del all_answer[int(dicta[right_answer])]
select = random.choice(all_answer) #随机选择一个错误答案
del jsondata[i][select]
if select < right_answer: #如果去掉的错误答案在正确答案之前,那么正确答案的序号减一
right_answer = "".join(chr((ord(x)-ord('A')-1)%4+ord('A')) for x in right_answer)
elif right_answer == "E": #如果正确答案为E选项,那么正确答案的序号减一
right_answer = "".join(chr((ord(x)-ord('A')-1)%4+ord('A')) for x in right_answer)
json_all.append(jsondata[i])
json_single = {}
json_single["context"] = jsondata[i]["context"]
json_single["question"] = jsondata[i]["question"]
if select == "A": #如果去掉的错误答案为A
json_single["A"] = jsondata[i]["B"]
json_single["B"] = jsondata[i]["C"]
json_single["C"] = jsondata[i]["D"]
json_single["D"] = jsondata[i]["E"]
elif select == "B":
json_single["A"] = jsondata[i]["A"]
json_single["B"] = jsondata[i]["C"]
json_single["C"] = jsondata[i]["D"]
json_single["D"] = jsondata[i]["E"]
elif select == "C":
json_single["A"] = jsondata[i]["A"]
json_single["B"] = jsondata[i]["B"]
json_single["C"] = jsondata[i]["D"]
json_single["D"] = jsondata[i]["E"]
elif select == "D":
json_single["A"] = jsondata[i]["A"]
json_single["B"] = jsondata[i]["B"]
json_single["C"] = jsondata[i]["C"]
json_single["D"] = jsondata[i]["E"]
elif select == "E":
json_single["A"] = jsondata[i]["A"]
json_single["B"] = jsondata[i]["B"]
json_single["C"] = jsondata[i]["C"]
json_single["D"] = jsondata[i]["D"]
json_single["answer"] = right_answer
json_new.append(json_single)
new_path = 'right.json' #输出结果到一个新的json文件内
json_str = json.dumps(json_new, indent=2, ensure_ascii=False)
json_file = open(new_path, 'w', encoding='utf-8')
json_file.write(json_str)
json_file.close()
输出结果right.json:
[
{
"context": "由于饮食中的高脂肪含量,新加坡人的心血管疾病的发病率也逐年上升。",
"question": "从上述断定,最可能推出以下哪项结论",
"A": "目前,新加坡对于心血管病的治疗水平是全世界最高的",
"B": "20世纪60年代造成新加坡人死亡的那些主要疾病,到21世纪,如果在该国的发病率没有实质性的降低,那么对这些疾病的医治水平一定有实质性的提高",
"C": "目前,新加坡人心血管疾病的发病率低于日本",
"D": "新加坡人比日本人更喜欢吃脂肪含量高的食物",
"answer": "B"
},
{
"context": "有人养了一些兔子。别人问他有多少只雌兔,多少只雄兔?他答:在他所养的兔子中,每只雄兔的雌性同伴比它的雄性同伴少1只:而每只雌兔的雄性同伴比它的雌性同伴的两倍少2只",
"question": "根据上述回答,可以判断他养了多少只雌兔?多少只雄兔",
"A": "8只雄兔,6只雕兔",
"B": "10只雄兔,8只雌兔",
"C": "14只雄兔,8只雌兔",
"D": "14只雄兔,12只雌兔",
"answer": "A"
}
]