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 stringpath = "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":         #如果去掉的错误答案为Ajson_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_answerjson_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"}
]

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

  1. server多笔记录拼接字符串 sql_sqlserver 将多行数据查询合并为一条数据

    有这样一个需求:表T_FUN_TASK为任务表,有字段(TASKID,TASKNAME),表T_FUN_LOGBOOK为日志表,有字段(LOGID,TASKID,LOGDATE),一个任务可持续多天, ...

  2. R语言head函数和tail函数获取dataframe、列表list、向量vector的头部和尾部数据:tail提取数据对象的尾部数据、head提取数据对象的头部数据、默认6条数据、自定义设置返回条数

    R语言head函数和tail函数获取dataframe.列表list.向量vector的头部和尾部数据:tail提取数据对象的尾部数据.head提取数据对象的头部数据.默认6条数据.自定义设置返回条数 ...

  3. mysql数据库中,查询一个表的下一条数据减上一条数据的值的写法

    mysql数据库中,查询一个表的下一条数据减上一条数据的值的写法: select a.nodeId,a.cpuCharge-b.cpuCharge cpuCharge, a.chargeTime fr ...

  4. sql语句查询一条数据的上一条数据和下一条数据

    表t_tablename id_param为当前id 1.查询上一条数据 select * from t_tablename where id=(select max(id) from t_table ...

  5. oracle 快速移动数据和删除重复数据但保留其中一条数据

    在项目中会遇到将一个表的部分数据移动另一个表中的事情. insert into table1 (id,其他属性) select t.a,t.c...from table2 t 注意属性类型大小要一致 ...

  6. python读取大数据量xml_[C#]_[使用微软OpenXmlSDK (OpenXmlReader)读取xlsx表格] 读取大数据量100万条数据Excel文件解决方案...

    1.OpenXmlSDK是个很好的类库,可惜只能通过C#调用,C#的童鞋又福气了. 2.服务端程序由于没法安装office,所以这个对asp.net网站来说是最理想的库了.需要.net 4.0版本以上 ...

  7. mysql 插入数据后返回该条数据id

    问题: 在做关联表插入操作时,需要根据主表的 主键id作详情表的属性值,最笨的方法就是,先插入主表,然后通过查询返回刚刚插入的 主键id,容易出现问题. 解决办法: 在mybatis的配置文件中,用k ...

  8. mysql定时清空表数据_Mysql实现定时清空一张表的旧数据并保留几条数据

    要达到如下目的: Mysql数据库会每隔一段时间(可以是2小时,也可以是一天,这个可以自定义),定时对一张库中的表做一个判断,如果这张表的数据超过了20条(这个数据也是自定义的,也可以是200条),就 ...

  9. mysql用一条sql语句删除重复记录_mysql中删除重复记录,并保留重复数据中的一条数据的SQL语句...

    正好想写一条删除重复语句并保留一条数据的SQL,网上查了一部分资料写的很详细,但还是在这里写下自己的理解,以遍后续学习 .如下: 表字段和数据: SQL语句: DELETE FROM`user`WHE ...

最新文章

  1. 【Android 进程保活】Android 进程优先级 ( 前台进程 | 可见进程 | 服务进程 | 后台进程 | 空进程 )
  2. struct __POSITION{}和ASSERT
  3. python sqllite远程_Python实现Sqlite将字段当做索引进行查询的方法
  4. php+使用go编译,golang如何编译
  5. 动态打印sql,服务报was not registered for synchronization because synchronization is not active
  6. VSTO程序基本知识(二)
  7. Wallpaper Engine软件——html做为壁纸
  8. //18. 定义一个基类BaseClass,从它派生出类DerivedClass,BaseClass有成员函数fn1()、fn2(),fn1()是虚函数,DerivedClass也有成员函数fn1()
  9. Discuz模板安装步骤以及发生的问题
  10. Linux查看Nvidia显卡型号
  11. 数字信号处理学习笔记[5] 冲激函数——delta函数
  12. java 文件上传乱码_java上传txt文件,出现中文乱码
  13. 如何购买华为服务器+云计算特点
  14. 两家“国网”合建5G,三大运营商“好日子到头”?
  15. 吕 思 伟 ---- 潘 爱 民 :: ATL 介 绍( 三) (转)
  16. 打火机与公主裙剧中的爱心
  17. Camera sensor 基本知识
  18. 海思HI3516移植使用AP6181 BCM43362
  19. 激光测距仪的发展与介绍——TFN 10K KI 双目远距离激光测距仪
  20. python 求图像SNR代码

热门文章

  1. (2020.1.13已解决)ImportError: cannot import name 'StringIO'
  2. 免费可商用,最值得收藏的10个插画素材网站
  3. 6.单行函数多行函数
  4. 标准振铃音和机器应答静音的检测方法
  5. report_template
  6. Python -- 创建新文件
  7. 将LCD屏幕倒过来显示(LCD翻转)
  8. 爱美客暴利:靠卖玻尿酸9个月净利10亿 市值超900亿
  9. kubernetes之初始化容器
  10. 我的七种武器之一:正则表达式