起因:使用python json包时,将键值对均为数字的字典存入txt文件后重新加载进字典后出现“字典key值不唯一”的神奇现象。
相关代码:
字典添加数据部分
def xuhao_chuti(self):
rand = random.randint(1, 908)
if rand in self.memery.keys() and self.memery[rand] >=2:
return self.xuhao_chuti()
elif rand in self.memery.keys() :
return rand
else:
self.memery[rand] = 0
return rand
字典重新加载部分
def in_chuti_jilu(self):
self.memery = dict()
try:
f= open(self.output_chutijilu_file,'r',encoding='utf-8')
self.memery = json.load(f)
f.close()
print('加载了出题记录:',len(self.memery))
except Exception as e:
print('出错了:',e)
经过查找资料后得出结论:
字典在调用json.dumps()时,将字典原本key值为数字,转换为了字符串类型,再次导入为字典后,key值也就是字符串类型了,再进行key值存在判断时,就出现了已有‘100’的key值,但还是添加了100的key值,再次调用json.dumps()时,文件就出现了键值一样的情况。
json格式标准
JSON 数据的书写格式是:名称/值对。
名称/值对包括字段名称(在双引号中),后面写一个冒号,然后是值:
例如:“name”:“小明”