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()