python的dict和json有什么区别?

工作中和其他语言的工程师交流,合作与联调中经常会涉及到数据的传输,这个数据的传输通常为json字符串,这个json格式数据和python自身的dict数据对象非常像,所以很自然的会思考这两者究竟区别在哪里?

首先,两者不一样

区别

  • Python 的字典是一种数据结构,JSON 是一种数据格式。

json 就是一个根据某种约定格式编写的纯字符串,不具备任何数据结构的特征。而 python 的字典的字符串表现形式的规则看上去和 json 类似,但是字典本身是一个完整的数据结构,实现了一切自身该有的算法。

  • Python的字典key可以是任意可hash对象,json只能是字符串。

形式上有些相像,但JSON是纯文本的,无法直接操作。

  • 1.python dict 字符串用单引号,json强制规定双引号。
  • 2.python dict 里可以嵌套tuple,json里只有array。 json.dumps({1:2}) 的结果是 {"1":2}; json.dumps((1,2)) 的结果是[1,2]
  • 3.json key name 必须是字符串, python 是hashable, {(1,2):1} 在python里是合法的,因为tuple是hashable type;{[1,2]:1} 在python里TypeError: unhashable "list"
  • 4.json: true false null ; python:True False None
    1. python {"me": "我"} 是合法的; json 必须是 {"me": "\u6211"}

联系

dict 存在于内存中,可以被序列化成 json 格式的数据(string),之后这些数据就可以传输或者存储了。
JSON 是一种数据传输格式。
也就是说,这些字符串以 JSON 这样的格式来传输,至于你怎么 parse 这些信息,甚至是是否 parse,是否储存,都不是 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 的实现,一套从存储到提取都封装好了的方案。

参考

你觉得python的字典和json差不多吗?

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • http://python.jobbole.com/85231/ 关于专业技能写完项目接着写写一名3年工作经验的J...
    燕京博士阅读 7,649评论 1 118
  • 个人笔记,方便自己查阅使用 Py.LangSpec.Contents Refs Built-in Closure ...
    freenik阅读 67,799评论 0 5
  • 最近在慕课网学习廖雪峰老师的Python进阶课程,做笔记总结一下重点。 基本变量及其类型 变量 在Python中,...
    victorsungo阅读 1,773评论 0 5
  • 这是我目前为止唯一本让我读了两遍的书籍,而且还加看了由原版改编的连续剧,因为看一遍很难领会钱钟书想表达的东西。这是...
    颜文和阅读 14,270评论 2 3
  • 一. NVIDIA的股票曲线 NVIDIA的ceo人称老黄,在把公司的战略转移到深度学习上之后,过去的一年股价的翻...
    skywalker阅读 1,227评论 0 6