Python基础--dict(或对象)与json之间的区别和互相转化

简介: Python开发中字典和 json的概念与相互转化

Python开发中字典和 json的概念区别:


一、字典


字典是一种数据结构,而json是一种数据格式,格式就会有一些形式上的限制,比如json的格式要求必须且只能使用双引号作为key或者值的边界符号(值如果是数字可以不用加双引号),不能使用单引号,用单引号或者不用引号会导致读取数据错误,而且“key”必须使用边界符(双引号),但字典就无所谓了,可以使用单引号,也可以使用双引号。

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


二、json


json是JavaScript Object Notation的首字母缩写,字面的意思是javascript对象表示法,这里说的json指的是类似于javascript对象的一种数据格式对象,目前这种数据格式比较流行,逐渐替换掉了传统的xml数据格式, 前端使用ajax的时候后台返回该前端的数据格式就是json格式的。

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


三、json和dict区别对比


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

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

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

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

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

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

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

json:true、false、null

python:True、False、None

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

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

 

json 本质上还是字符串,只是按 key:value 这种键值对的格式来的字符串

• import json
• name_emb = {'a':'1111','b':'2222','c':'3333','d':'4444'} #定义一个字典
• jsObj = json.dumps(name_emb)      #把字典转成json字符串
• print(name_emb)
• print(jsObj)
• print(type(name_emb))
• print(type(jsObj))
• 运行结果如下:
• {'a': '1111', 'c': '3333', 'b': '2222', 'd': '4444'}  #字典
• {"a": "1111", "c": "3333", "b": "2222", "d": "4444"}  #jason字符串本质还是str字符串
• <type 'dict'>
• <type 'str'>

 

• import json
• a = {"a": 1, "b": 2, "c": True}  # 定义1个字典
• b = '{"a": 1, "b": 2, "c": true}'  #定义一个json格式str,就是json字符串
• print(type(a))
• print(json.dumps(a))      #把dict转 json
• 运行结果
• <class 'dict'>
• {"a": 1, "b": 2, "c": true}
• <class 'str'>
• {'a': 1, 'b': 2, 'c': True}

转化方法:

json模块有2个方法,

  • loads():将json数据转化成dict数据
  • dumps():将dict数据转化成json数据
  • load():读取json文件数据,转成dict数据
  • dump():将dict数据转化成json数据后写入json文件
• import json
• def dict_to_json_write_file():
• dict = {}
• dict['name'] = 'many'
• dict['age'] = 10
• dict['sex'] = 'male'
• print(dict)  # {'name': 'many', 'age': 10, 'sex': 'male'}
• with open('1.json', 'w') as f:
• json.dump(dict, f)  # 会在目录下生成一个1.json的文件,文件内容是dict数据转成的json数据
• if __name__ == '__main__':
• dict_to_json_write_file()

 

• import json
• def json_file_to_dict():
• with open('1.json', 'r') as f:
• dict = json.load(fp=f)
• print(dict)  # {'name': 'many', 'age': 10, 'sex': 'male'}
• if __name__ == '__main__':
• json_file_to_dict()
目录
相关文章
|
18天前
|
JSON 数据格式 索引
Python中序列化/反序列化JSON格式的数据
【11月更文挑战第4天】本文介绍了 Python 中使用 `json` 模块进行序列化和反序列化的操作。序列化是指将 Python 对象(如字典、列表)转换为 JSON 字符串,主要使用 `json.dumps` 方法。示例包括基本的字典和列表序列化,以及自定义类的序列化。反序列化则是将 JSON 字符串转换回 Python 对象,使用 `json.loads` 方法。文中还提供了具体的代码示例,展示了如何处理不同类型的 Python 对象。
|
1月前
|
JSON 数据格式 Python
Python实用记录(十四):python统计某个单词在TXT/JSON文件中出现的次数
这篇文章介绍了一个Python脚本,用于统计TXT或JSON文件中特定单词的出现次数。它包含两个函数,分别处理文本和JSON文件,并通过命令行参数接收文件路径、目标单词和文件格式。文章还提供了代码逻辑的解释和示例用法。
44 0
Python实用记录(十四):python统计某个单词在TXT/JSON文件中出现的次数
|
1月前
|
JSON 数据格式 Python
Python编程:利用JSON模块编程验证用户
Python编程:利用JSON模块编程验证用户
|
1月前
|
存储 大数据 数据处理
Python 中的列表推导式与生成器:特性、用途与区别
Python 中的列表推导式与生成器:特性、用途与区别
26 2
|
1月前
|
存储 C语言 Python
解密 Python 的变量和对象,它们之间有什么区别和联系呢?
解密 Python 的变量和对象,它们之间有什么区别和联系呢?
23 2
|
2月前
|
JSON API 数据格式
使用Python发送包含复杂JSON结构的POST请求
使用Python发送包含复杂JSON结构的POST请求
|
2月前
|
Python
python 如何将QueryDict转化为dict | 18
python 如何将QueryDict转化为dict | 18
|
2月前
|
存储 Python
Python中类方法、实例方法与静态方法的区别
这三种方法的正确使用可以使代码更加清晰、组织良好并且易于理解,从而有效地支持软件开发的面向对象编程范式。
44 1
|
1月前
|
机器学习/深度学习 缓存 Linux
python环境学习:pip介绍,pip 和 conda的区别和联系。哪个更好使用?pip创建虚拟环境并解释venv模块,pip的常用命令,conda的常用命令。
本文介绍了Python的包管理工具pip和环境管理器conda的区别与联系。pip主要用于安装和管理Python包,而conda不仅管理Python包,还能管理其他语言的包,并提供强大的环境管理功能。文章还讨论了pip创建虚拟环境的方法,以及pip和conda的常用命令。作者推荐使用conda安装科学计算和数据分析包,而pip则用于安装无法通过conda获取的包。
83 0
|
2月前
|
Python
全网最适合入门的面向对象编程教程:Python函数方法与接口-函数与方法的区别和lamda匿名函数
【9月更文挑战第15天】在 Python 中,函数与方法有所区别:函数是独立的代码块,可通过函数名直接调用,不依赖特定类或对象;方法则是与类或对象关联的函数,通常在类内部定义并通过对象调用。Lambda 函数是一种简洁的匿名函数定义方式,常用于简单的操作或作为其他函数的参数。根据需求,可选择使用函数、方法或 lambda 函数来实现代码逻辑。
下一篇
无影云桌面