json格式的数据集中每一条数据5个选项随机去掉一个错误选项,剩余选项重新排序

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"
  }
]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值