简介

这篇文章的由来是由于上一篇发送post请求的接口时候,参数传字典(dict)和json的缘故,因为python中,json和dict非常类似,都是key-value的形式,为啥还要这么传参,在群里问了一些人,也说不出个所以然了,还是自己动手丰衣足

食,所以才有这篇和编辑分类格格不入的文章。来先看一下它们各自的定义。

定义

python中,json和dict非常类似,都是key-value的形式,而且json、dict也可以非常方便的通过dumps、loads互转。既然都是key-value格式,为啥还需要进行格式转换?

json(JavaScript Object Notation)

json:是一种数据格式,是纯字符串。可以被解析成Python的dict或者其他形式。

dict:是一个完整的数据结构,是对Hash Table这一数据结构的一种实现,是一套从存储到提取都封装好了的方案。它使用内置的哈希函数来规划key对应value的存储位置,从而获得O(1)的数据读取速度。

json和dict对比

1、json的key只能是字符串,python的dict可以是任何可hash对象(hashtable type);

2、json的key可以是有序、重复的;dict的key不可以重复。

3、json的value只能是字符串、浮点数、布尔值或者null,或者它们构成的数组或者对象。

4、json任意key存在默认值undefined,dict默认没有默认值;

5、json访问方式可以是[],也可以是.,遍历方式分in、of;dict的value仅可以下标访问。

6、json的字符串强制双引号,dict字符串可以单引号、双引号;

7、dict可以嵌套tuple,json里只有数组。

8、json:true、false、null

9、python:True、False、None

10、json中文必须是unicode编码,如"\u6211".

11、json的类型是字符串,字典的类型是字典。

hashtable

一个对象当其声明周期内的hash值不发生改变,而且可以跟其他对象进行比较时,这个对象就是hashtable的。

1、python中的基本类型都是Hashtable,如str、bytes、数字类型、tuple等;

2、用户自定义的类型默认都是hashtable,因为它们的hash值就是id()值;

3、frozenset始终都是hashtable的,因为它们所有的项目都是被定义成hashtable的;

4、只有当tuple内的所有项都是hashtable的时候,tuple才是hashtable;

代码示例对比

小结

实际上JSON就是Python字典的字符串表示,但是字典作为一个复杂对象是无法直接转换成定义它的代码的字符串,字典是一个数据的结构,而json只是一个具有一定规则的字符串,方便在不同平台上处理其中包含的数据。

但本质上来讲,字典是一种数据结构,json是一种格式;字典有很多内置函数,有多种调用方法,而json是数据打包的一种格式,并不像字典具备操作性,并且是格式就会有一些形式上的限制,比如json的格式要求必须且只能使用双引号作为

key或者值的边界符号,不能使用单引号,而且“key”必须使用边界符(双引号),但字典就无所谓了。

形式上的相近也让python提供了json.loads()转换函数,方便json数据的调用。

python字典api_python接口自动化(九)--python中字典和json的区别(详解)相关推荐

  1. python request.post 字典参数以json_Python requests.post方法中data与json参数区别详解

    在通过requests.post()进行POST请求时,传入报文的参数有两个,一个是data,一个是json. data与json既可以是str类型,也可以是dict类型. 区别: 1.不管json是 ...

  2. python post json参数,Python requests.post方法中data与json参数区别详解

    在通过requests.post()进行POST请求时,传入报文的参数有两个,一个是data,一个是json. data与json既可以是str类型,也可以是dict类型. 区别: 1.不管json是 ...

  3. [Python从零到壹] 九.网络爬虫之Selenium基础技术万字详解(定位元素、常用方法、键盘鼠标操作)

    欢迎大家来到"Python从零到壹",在这里我将分享约200篇Python系列文章,带大家一起去学习和玩耍,看看Python这个有趣的世界.所有文章都将结合案例.代码和作者的经验讲 ...

  4. python中average什么意思_在Python3 numpy中mean和average的区别详解

    mean和average都是计算均值的函数,在不指定权重的时候average和mean是一样的.指定权重后,average可以计算一维的加权平均值. 具体如下: import numpy as np ...

  5. python 文件读写with open模式r,r+ w,w+ a,a+区别详解

    python 文件读写with open模式r,r+ w,w+ a,a+区别详解 python中的 with open主要要来进行文件读写的操作 在 Python 中使用文件的关键函数是 open() ...

  6. 关于numpy中eye和identity的区别详解

    https://www.jb51.net/article/175386.htm np.identity(n, dtype=None) np.eye(N, M=None, k=0, dtype=< ...

  7. java throw与throws_基于Java中throw和throws的区别(详解)

    系统自动抛出的异常 所有系统定义的编译和运行异常都可以由系统自动抛出,称为标准异常,并且 Java 强烈地要求应用程序进行完整的异常处理,给用户友好的提示,或者修正后使程序继续执行. 语句抛出的异常 ...

  8. throws java_基于Java中throw和throws的区别(详解)

    系统自动抛出的异常 所有系统定义的编译和运行异常都可以由系统自动抛出,称为标准异常,并且 Java 强烈地要求应用程序进行完整的异常处理,给用户友好的提示,或者修正后使程序继续执行. 语句抛出的异常 ...

  9. PHP中include和require的区别详解

    PHP中include和require的区别详解 1.概要  require()语句的性能与include()相类似,都是包括并运行指定文件.不同之处在于:对include()语句来说,在执行文件时每 ...

  10. java里throws详细讲解,基于Java中throw和throws的区别(详解)

    系统自动抛出的异常 所有系统定义的编译和运行异常都可以由系统自动抛出,称为标准异常,并且 Java 强烈地要求应用程序进行完整的异常处理,给用户友好的提示,或者修正后使程序继续执行. 语句抛出的异常 ...

最新文章

  1. Matlab数据的可视化 -- 平面多边形的着色
  2. UITableView全面解析
  3. 基于NanoVNA调整150kHz``选频``放大电路
  4. 【电商福利】双十二优惠福利专场
  5. 丑憨批的Transformer笔记
  6. Fitness - 05.23
  7. php 常用编译参数,php编译参数,不用怕!!
  8. java子字符串查找位置_初学者求教,如何在字符串中查找多个子字符串的位置...
  9. POJ3978 Primes【素数筛选+前缀和】
  10. 爬虫python能做什么-Python 爬虫学到什么样就可以找工作了?
  11. 板邓:wordpress标签调用函数大全
  12. 系统学习深度学习(二十四)--WRN
  13. 公司内网与外网连通中的一些小问题(达内)
  14. hihoCoder 1369 网络流一·Ford-Fulkerson算法 (网络流学习#1 记录)
  15. 区块链将成为互联网基础协议,类似于TCP/IP、HTTP
  16. Python利用 Anaconda安装pytorch并测试GPU
  17. 黎曼Zeta函数,人类文明永恒的纪念
  18. 30天自制操作系统第一天
  19. CodeForces - 711A 找座位 难度:C++入门 复杂度:简单 翻译难度:难
  20. 通过view实现实时监测数据的实时更新展示

热门文章

  1. ssas 层次结构_分析服务(SSAS)多维设计技巧–关系和层次结构
  2. 转,docker学习笔记
  3. 【Python3_进阶系列_004】Python3-工厂设计模式
  4. 2018-7-10杂记
  5. 查看日志tail命令
  6. viewport理解
  7. 20150217 IMX257实现GPIO-IRQ中断按键驱动程序
  8. HTML img 标签的 border 属性
  9. clean build 的区别(转)
  10. sleep和sleep(0)的区别