【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

原文地址:https://www.cnblogs.com/dplearning/p/8258592.html

时间: 2024-10-11 23:31:20

【python】json中字典key不可为数值型的相关文章

python json模块 字典 输出中文

json.dumps({'text':"中文"},ensure_ascii=False,indent=2) python json模块 字典得到字符串,输出中文

JS 遍历JSON中每个key值

JS 遍历JSON中的每个key值,可以按键值对进行存储: var myVar = { typeA: { option1: "one", option2: "two" } } Object.keys(myVar).forEach(function(k) { if(k === "typeA") { // do stuff } else if (k === "typeB") { // do more stuff } else {

Python基本语法_基本数据类型_数值型详解

目录 目录 软件环境 Python变量调用的过程 数值型 删除一个数值类型对象 布尔型 Bool 标准整型 Int 长整型 双精度浮点型 Float 复数 数值类型对象的内建功能函数 absNumber 求Number的绝对值 coercex y 将x y转换为同一种数值类型 divmodx y 除法-取余运算的结合 pow 指数运算或将结果取余 round 浮点型的四舍五入运算和求精度 仅用于整型对象的函数 软件环境 系统 CentOS 7 软件 Python 2.7.5 IPython 5.

如果json中的key需要首字母大写怎么解决?

一般我们命名都是驼峰式的,可是有时候和第三方接口打交道,也会遇到一些奇葩,比如首字母大写........额 这是个什么鬼,对方这么要求,那我们也得这么写呀. 于是乎,第一种方式:把类中的字段首字母大写,简单粗暴,然后生成setter getter.然后测试......给跪了 发现还是小写,额滴个亲娘呀,恁是咋回事儿呀. 原来 jackson在把类转成json的时候,看的是setter getter方法.也就是javabean. 搜噶. 于是乎,我们是否可以指定json的字段名呢,比如类中叫wha

python中字符串list转化为数值型

之前在网上找相关的资料,给出的方法都不合适, 经过很长时间的试错才知道源于python2.X和python3.X的不同, 原理都是采用map函数,但是二者返回的信息不同 Python2.x,可以使用map函数 ? 1 numbers = map(int, numbers) 如果是3.x,map返回的是map对象,当然也可以转换为List: ? 1 numbers = list(map(int, numbers)) 所以这里需要区别对待: 链接:http://www.jb51.net/articl

Python 中json与字典的关系

Python开发中字典和 json的概念区别: 一.字典 字典是一种数据结构,而json是一种数据格式,格式就会有一些形式上的限制,比如json的格式要求必须且只能使用双引号作为key或者值的边界符号(值如果是数字可以不用加双引号),不能使用单引号,用单引号或者不用引号会导致读取数据错误,而且“key”必须使用边界符(双引号),但字典就无所谓了,可以使用单引号,也可以使用双引号. dict是一个完整的数据结构,是对Hash Table这一数据结构的一种实现,是一套从存储到提取都封装好了的方案.它

[Python]学习过程中的那些问题--不断更新

一.安装模块提示报错:You are using pip version 9.0.1, however version 9.0.3 is available.You should consider upgrading via the 'python -m pip install --upgrade pip' comm and. # 使用下面的命令更新pip python -m pip install --upgrade pip 二.paramiko的依赖包pycrypto无法安装升级pip到9.

Python中字典的key都可以是什么

作者:Inotime 来源:CSDN 原文:https://blog.csdn.net/lnotime/article/details/81192207 答:一个对象能不能作为字典的key,就取决于其有没有__hash__方法.所以所有python自带类型中,除了list.dict.set和内部至少带有上述三种类型之一的tuple之外,其余的对象都能当key. 比如数值/字符串/完全不可变的元祖/函数(内建或自定义)/类(内建或自定义)/方法/包等等你能拿出手的,不过有的实际意义不高.还有数值型

python:用json把字典序列化到文件中

#写程序最好是dump一次和load一次,可以存好几个文件 import json info={'name':'Tom', 'age':'12', 'job':'work',} f=open('file1.txt','w') f.write(json.dumps(info)) f.close() 把字典存入文件中 info={'name':'Tom', 'age':'12', 'job':'work',} f=open('test.txt','w') f.write(str(info)) f.c