对 Python 中 dict 和 json 的区别详解
相同点
dict
和json
都可以用来表示键值对。dict
和json
都可以使用相同的键或者值类型。
区别
1. 序列化和反序列化
dict
是 Python 内置的一种数据结构,可以直接使用 Python 的方法进行序列化和反序列化。比如:
import json
d = {'a': 1, 'b': 2, 'c': 3}
# 序列化成json字符串
json_str = json.dumps(d) # '{"a": 1, "b": 2, "c": 3}'
# 反序列化
new_dict = json.loads(json_str) # {'a': 1, 'b': 2, 'c': 3}
json
是一种标准化的数据格式,通常用于在不同的设备和语言之间进行数据交换。Python 中也内置了 json
模块,可以用来将 Python 对象转换为 json
格式,以及将 json
数据转换为 Python 对象。比如:
import json
d = {'a': 1, 'b': 2, 'c': 3}
# Python 对象转 json
json_str = json.dumps(d) # '{"a": 1, "b": 2, "c": 3}'
# json 转 Python 对象
new_dict = json.loads(json_str) # {'a': 1, 'b': 2, 'c': 3}
2. 数据类型
dict
中的键只能使用不可变类型,比如字符串、数字和元组等。而在 json
中,键可以使用字符串、数字和布尔值等任何可序列化的数据类型。
import json
# Python dict 中键为元组时,报错
d = {(1, 2): 3}
json_str = json.dumps(d) # TypeError: keys must be str, int, float, bool or None, not tuple
# json 中键为元组时,序列化成功
d = {'(1, 2)': 3}
json_str = json.dumps(d) # '{"(1, 2)": 3}'
3. 特殊字符转义
在 json
中,一些特殊字符(比如双引号和换行符等)需要进行转义,以便正确地读取和处理数据。而在 dict
中,这些特殊字符则无需进行转义,在使用时可以直接引用。
import json
# json 中需要转义双引号和换行符
json_str = '{"name": "Alice", "age": 20, "message": "This is \\n a message with \\\"quotes\\\"."}'
# Python 字典不需要转义
d = {'name': 'Alice', 'age': 20, 'message': 'This is \n a message with "quotes".'}
总结
dict
和json
都可以用来表示键值对,但json
是一种标准化的数据格式,通常用于在不同的设备和语言之间进行数据交换。dict
是 Python 内置的一种数据结构,可以直接使用 Python 的方法进行序列化和反序列化。而json
则需要通过json
模块进行转换。dict
中的键只能使用不可变类型,而json
中的键则可以使用任何可序列化的数据类型。- 在
json
中,一些特殊字符需要进行转义,而在dict
中则不需要进行转义。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:对python中dict和json的区别详解 - Python技术站