简介

  这篇文章的由来是由于上一篇发送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数据的调用。

转载于:https://www.cnblogs.com/tiechui2015/p/10908215.html

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接口自动化(二十七)--html 测试报告——上(详解)

    简介 上一篇我们批量执行完用例后,生成的测试报告是文本形式的,不够直观,而且报告一般都是发给leader的,所以最好是直观一目了然,为了更好的展示测试报告,最好是生成 HTML 格式的.unittes ...

  4. python接口自动化(十三)--cookie绕过验证码登录(详解)

    简介 有些登录的接口会有验证码:短信验证码,图形验证码等,这种登录的话验证码参数可以从后台获取的(或者查数据库最直接).获取不到也没关系,可以通过添加cookie的方式绕过验证码.(注意:并不是所有的 ...

  5. python接口自动化(二十三)--unittest断言——上(详解)

    简介 在测试用例中,执行完测试用例后,最后一步是判断测试结果是 pass 还是 fail,自动化测试脚本里面一般把这种生成测试结果的方法称为断言(assert).用 unittest 组件测试用例的时 ...

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

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

  7. python硬件交互_对Python的交互模式和直接运行.py文件的区别详解

    对Python的交互模式和直接运行.py文件的区别详解 看到类似C:\>是在Windows提供的命令行模式,看到>>>是在Python交互式环境下. 在命令行模式下,可以执行p ...

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

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

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

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

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

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

最新文章

  1. SCSI 总线和协议
  2. 汽车需要镀晶吗?镀晶是起什么作用的?
  3. [公测]微信小程序设计指南文档
  4. date javascript 时区_第23节 Datejs 日期库-Web前端开发之Javascript-零点程序员-王唯
  5. Shell shift的使用方法
  6. 慧材技术中核普达测量与测绘系统介绍(一)
  7. Photon服务器引擎入门
  8. matlab参数摄动仿真,《过程控制工程及仿真:基于MATLAB/Simulink》随书光盘
  9. 【Kafka】BrokerNotAvailableException: Error choosing node for describeLogDirs: no node found.
  10. linux amp;amp; ; amp;amp;amp;amp; ||
  11. nodeJS之域名DNS
  12. python爬取凤凰新闻_python爬虫凤凰网新闻
  13. 判断zip,rar 文件是否加密
  14. linux 查看内存 udimm rdimm,服务器UDIMM、LRDIMM、RDIMM三种内存如何区别
  15. Java学习笔记类对象多态继承(下)
  16. 8分频verilog线_任意分数分频Verilog实现
  17. NUMA为何成为云计算的关键技术
  18. 【WLAN】Android 13 p2p / wifi direct介绍
  19. 对话驴评网CEO崔继蓉:在线旅游的前途在移动端
  20. linkedList手写

热门文章

  1. 全面支持3.0 新华三“力夯”可信计算发展
  2. oracle创建用户和密码以及授权登录问题
  3. jsoup解析HTML及简单实例
  4. 自定义评分器Similarity,提高搜索体验(转)
  5. 阿帕奇服务器文件上传,Apache HttpCore4.4基于经典的IO实现HTTP文件传输服务器
  6. python爬取网页上的特定链接_python 用bs4解析网页后,如何循环打开爬取出来的网址链接?...
  7. delphi dbgrideh 遍历每一个单元格_真香!我用Python 制作了一个迷宫游戏
  8. excel甘特图模板_最简单的Excel甘特图制作方法,只用一条公式,项目进度一目了然...
  9. 信道模型多径传播阴影衰落——无线接入与定位(2)
  10. pythonif有多个条件怎么办,Python if有多个条件怎么办