【python】json中字典key不可为数值型
遇到了一个很诡异的错误。写一个字典,存入json文件。之后读出判断是否存在key。结果惊奇的发现,同一个key居然存在两次。
原因:json会将数值key转换为unicode
结论:使用json时字典key不可为数值!
复现问题:
>>> a = {} >>> a[1] = 1 >>> b = json.dumps(a) >>> c = json.loads(b) >>> a {1: 1} >>> c {u'1': 1} >>> c[1] = 1 >>> c {u'1': 1, 1: 1} >>> d = json.dumps(c) >>> d '{"1": 1, "1": 1}'
对比a和c可以看到,数值型的key被转成了unicode,之后再写入数值型key的时候被当成了一个新的key