json和字典dict的区别?

2021.07.03 11:13:00字数 987阅读 173
作者:Gakki

json和字典dict的区别?

字典写法:
dict1 = {'Alice': '2341', 'Beth': '9102', 'Cecil': '3258'}
JSON 写法:

 {
"weibo": "https://weibo.com" ,
"github": "https://github.com" ,
"qq": {
"number": "1236517",
"email": "1236517@qq.com"
}
}

从形式上来讲,都是 ” Key: Value " 的形式存储数据。
但从本质上来讲:

  1. 字典是一种数据结构,而 JSON 是一种格式
  2. JSON 就是一个根据某种约定格式编写的纯字符串,不具备任何数据结构特征。而字典的字符串表现形式的规则看上去和 JSON 类似,但字典本身是一个完整的数据结构,实现了一切自身该有的算法
  3. 字典有很多内置函数,有多种调用方法, 而 JSON 是数据打包的一种格式,并不像字典具备操作性,并且是格式就会有一些形式上的限制,比如 JSON 的格式要求必须且只能使用双引号作为 Key 或者 值 的边界符,不能使用单引号,而且 ” Key “ 必须使用边界符(双引号),但字典就无所谓了,可以单引号、双引号。
  4. JSON 的 Key 只能是字符串,字典可以是任何可 hash 对象
  5. JSON 的 Key 可以是有序、重复的,字典的 key 不可重复
  6. JSON 的 Key 存在默认值 undefined,字典没有默认值
  7. JSON 的 Value 只能是字符串、浮点数、布尔值或者null,或者它们构成的数组或者对象
  8. JSON 可以是 " [] " 或者 点号(.) 来访问嵌套的 JSON 对象(如:document.write(myObj.qq.email) 或者 document.write(myObj["qq"]["email"]);document.write(myObj.qq["email"]);),遍历方式分 in 、 of ,dict 的 value 仅可以通过下边 " [] " 访问(如:dict1['Alice'])。
  9. JSON 里只有数组,字典可以嵌套元组
  10. JSON 中的中文必须是 Unicode 编码,如“你好”在json中应为"\u4f60\u597d"。
  11. JSON 的数据类型是字符串( str ),字典的数据类型是字典( dict )
  12. JSON 定义布尔值和空值:true、false、null;Python 定义布尔值和空值:True、False、None

联系:

  1. 字典存在于内存中,可以被序列化成 JSON 格式的数据( str ),之后这些数据就可以传输或者存储了
  2. JSON 是一种数据传输格式。也就是说,这些字符串以 JSON 这样的格式来传输,至于你怎么解析这些信息,甚至是否解析,是否存储,都不是 JSON 的事情。
    用 Python 举个例子: 某段程序可以把字符串 "{A:1, B:2}" parse 成 一对 tuple( ("A", 1), ("B", 2) )而不是 dictionary {"A": 1, "B": 2}。Python 的 dictionary 是对 Hash Table 这一数据结构的一种实现。它使用其内置的哈希函数来规划键对应的内容的储存位置,从而获得 O(1) 的数据读取速度。所以 JSON 是一种数据传输格式,它能被解析成 Python 的 Dictionary 或者其他形式,但解析成什么内容是和 JSON 这种格式无关的。Python 的 Dictionary 则是 Python 对 Hash Table 的实现,一套从存储到提取都封装好了的方案。
  • 相关知识:Hashtable
    一个对象当其声明周期内的 hash 值不发生改变,并且可以跟其他对象进行比较时,这个对象就是 Hashtable的。
    1. Python 中的基本类型都是 Hashtable,如:字符串(str)、数字( int、float)、元组tuple(只有当tuple内的所有项都是hashtable的时候,tuple才是hashtable)、集合set(set始终都是hashtable的,因为它们所有的项目都是被定义成hashtable的)等。
    2. 用户自定义的类型默认都是 Hashtable,因为它们的hash值就是其id值。

json和字典dict的区别的更多相关文章

  1. 【python】python中的json、字典dict

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

  2. 使用 json 模块,使json数据格式与Python字典dict数据格式互相转换,获取数据更加方便

    一.定义 JSON 是一种数据格式 使用 javaScript (Java 死鬼破特)对象表示法 二.特点 1.JSON 与 XML格式数据的区别 ====== 两种格式的数据,都是跨语言,跨平台 c ...

  3. 什么鬼?你还搞不懂json和字典的区别??

    现在自动化培训烂大街,是个人都能说的上几个框架,面试如果问框架相关问题,求职者只需一瓶 82 年的雪碧,会吹的让你怀疑人生!所以面试官为了更清楚的知道你是停留在表面上的花拳绣腿还是有扎实的基础,就不会 ...

  4. python中集合set,字典dict和列表list的区别以及用法

    python中set代表集合,list代表列表,dict代表字典 set和dict的区别在于,dict是存储key-value,每一个key都是唯一的,set相对于dict存储的是key,且key是唯 ...

  5. python字典转化成json格式。JSONEncoder和JSONDecoder两个类来实现Json字符串和dict类型数据的互相转换

    遇到问题:进行Webservice接口测试时,对接口入参数据进行了处理,变成了dict格式,去进行接口请求报错. 需要转成成json格式,双引号去扩. 如下: 更改代码: # 在Python标准库的j ...

  6. 【转】python中json.loads与eval的区别

    JSON有两种结构: “名称/值”对的集合(A collection of name/value pairs).不同的语言中,它被理解为对象(object),纪录(record),结构(struct) ...

  7. python中的字典(dict),列表(list),元组(tuple)

    一,List:列表 python内置的一种数据类型是列表:list.list是一种有序的数据集合,可以随意的添加和删除其中的数据.比如列出班里所有的同学的名字,列出所有工厂员工的工号等都是可以用到列表 ...

  8. 自学Python2.4-基本数据类型-字典dict(objct)

    Python dict方法总结 一.字典介绍 1.字典概述 ①字典是python中唯一内建的映射类型.又称关联数组或散列②映射类型对象里哈希值(键,key)和指向的对象(值,value)是一对多的的关 ...

  9. Python字典(dict)使用技巧

    字典dict是Python中使用频率非常高的数据结构,关于它的使用,也有许多的小技巧,掌握这些小技巧会让你高效地的使用dict,也会让你的代码更简洁. 1.默认值 假设name_for_userid存 ...

  10. Python中字典dict

    dict字典 字典是一种组合数据,没有顺序的组合数据,数据以键值对形式出现 # 字典的创建 # 创建空字典1 d = {} print(d) # 创建空字典2 d = dict() print(d) ...

随机推荐

  1. Jetson Xavier NX 试玩 (一)

    Jetson Xavier NX 试玩 (一) 环境搭建 0 前言 NVIDIA家的Jetson系列是业内嵌入式边缘计算机的代表作,体积小,功能强是其最主要的优点. 学院入手了一款Jeston Xav ...

  2. 11.8 消除闪烁(2)(harib08h)

    ps:看书比较急,有错误的地方欢迎指正,不细致的地方我会持续的修改 11.8 消除闪烁(2)(harib08h) 11.7 消除闪烁(1)(harib08g)存在的问题: 鼠标放在计时器上会有 闪烁, ...

  3. 【git】学习笔记

    一.git原理 git只能跟踪文本文件的变化,比如txt文件.程序代码等.而对于图片.视频等二进制文件的变化,就无法知道变化了哪里. git 分支的理解:如下图所示,git分支可以理解为是一个指针以及 ...

  4. Spark Catalyst 查询优化器原理

    这里我们讲解一下SparkSQL的优化器系统Catalyst,Catalyst本质就是一个SQL查询的优化器,而且和 大多数当前的大数据SQL处理引擎设计基本相同(Impala.Presto.Hive ...

  5. 自己动手从零写桌面操作系统GrapeOS系列教程——21.汇编语言写硬盘实战

    学习操作系统原理最好的方法是自己写一个简单的操作系统. 在上一讲中我们学习了用汇编语言读硬盘,本讲我们来学习用汇编语言写硬盘.同样也是设计一个简单的实验,实验内容为: 在内存中准备一段有特征的512字 ...

  6. SpringBoot——定制错误页面及原理

    更多内容,前往 IT-BLOG 一.SpringBoot 默认的错误处理机制 [1]浏览器返回的默认错误页面如下:  ​☞ 浏览器发送请求的请求头信息如下:text/html 会在后面的源码分析中说到 ...

  7. 系统评价——数据包络分析DEA的R语言实现(七)

    数据包络分析(Data envelopment analysis,DEA)是运筹学中用于测量决策部门生产效率的一种方法,它是基于相对效率发展的崭新的效率评估方法. 详细来说,通过使用数学规划模型,计算 ...

  8. PDF打开后显示的名称不是其文件名怎么办?

      本文介绍打开PDF文件时,PDF阅读器所显示的文件名称与文件实际名称不一致的解决办法.   就在刚刚准备一篇空间三维建模相关的博客时,偶然发现了如下一个问题:   在打开这个图中名称为空间三维建模 ...

  9. 五月九号java基础知识点

    1.哈希集合元素不按顺序排序,若要排序使用LinkedHashSet类2.树集合类不仅实现Set接口,还实现java.lang.SortedSet接口来实现排序操作3.TreeSet<Strin ...

  10. 阿里巴巴建议这样遍历Map,今天就用几种方式做个比较一下看那种最好用

    ​今天不举例子了,问一句你开心吗?不开心也要记得把开心的事情放到快乐源泉小瓶子里,偶尔拿出来一一遍历看看. Map在我们Java程序员高频使用的一种数据结构,Map的遍历方式也有很多种,那那种方式比较 ...