公众号‘小鹏长翅’同步发布
今天梳理下json和python中的字典的区别与联系
字典
字典是以键值对形式出现的存储对象
字典用大括号{}表示
- 一个简单的字典
dict1 = {'姓名':'张飞','体重':250}
print(type(dict1))
>>><class 'dict'>
其中'姓名'和'体重'是键,'张飞'和250是各自的值
键和值用冒号‘:’关联
多个键值对之间用逗号‘,’分隔
- 字典是无序的,不能通过下标来获取字典内的值
只能用dict[键名]获取键的值
dict1 = {'姓名':'张飞','体重':250}
dict2 = {'体重':250,'姓名':'张飞'}
print(dict1 == dict2)
>>>True#两个字典内的键值对顺序不同,但是等价的。
print(dict2['姓名'])
>>>张飞#通过键获取值
- 字典的值是唯一的
dict3 = {'姓名':'张飞','体重':250,'姓名':'关羽'}
#一个字典中有两个同样的键‘姓名’
print(dict3)
>>>{'姓名': '关羽', '体重': 250}
#可以看到,后边的键值对会覆盖前边的
字典的新增与修改语句是一样的,根据键修改值,已有键则更新,否则新增
dict4 = {'姓名':'张飞','体重':250}
dict4['姓名'] = '关羽'#字典中已有键‘姓名’,则修改该键的值
dict4['身高'] = 195#字典中没有键‘身高’,则新增一个键值对
print(dict4)
>>>{'姓名': '关羽', '体重': 250, '身高': 195}
- 删除字典中的键值对
dict5 = {'姓名': '关羽', '体重': 250, '身高': 195}
del dict5['体重']#del 删除
print(dict5)
>>>{'姓名': '关羽', '身高': 195}
- 清空字典
清空字典有两种方法
方法1:清除字典的值,字典还是那个字典
方法2:重新定义一个新的字典,名字与原字典相同,值为空。
可以通过函数id()来理解
id():返回对象位于内存中的地址,也是对象在内存中的唯一标识符
- 方法1
dict6 = {'姓名': '关羽', '体重': 250, '身高': 195}
print(id(dict6))#查看字典dict6在内存中的标识符
dict6.clear()#清空字典
print(dict6)#清空后,再查看字典dict6在内存中的标识符
print(id(dict6))
>>>
2385073211456
{}
2385073211456#可以看到,标识符没有变化
- 方法2
dict7 = {'姓名': '关羽', '体重': 250, '身高': 195}
print(id(dict7))#查看字典dict7在内存中的标识符
dict7 = {}#清空字典
print(dict7)#清空后,再查看字典dict7在内存中的标识符
print(id(dict7))
>>>
1984743540800
{}
1984743540864#可以看到,标识符发生了变化
- 遍历字典
- 遍历字典的键值对
dict8 = {'姓名': '关羽', '体重': 250, '身高': 195}
for key,value in dict8.items():#items(),用来遍历键值对
print(key,value)
>>>
姓名 关羽
体重 250
身高 195
- 遍历字典中的键
dict9 = {'姓名': '关羽', '体重': 250, '身高': 195}
for key in dict9.keys():#keys(),用来遍历键
print(key)
>>>
姓名
体重
身高
- 遍历字典中的值
dict10 = {'姓名': '关羽', '体重': 250, '身高': 195}
for value in dict10.values():#values(),用来遍历值
print(value)
>>>
关羽
250
195
json格式
json格式有两种
1.非常像字典的字符串-键值对形式
2.非常像列表的字符串-数组形式
两种格式本质上是都是字符串
用的比较多是键值对形式
json格式多用于不同模块或客户端与服务器或服务器与服务器之前的数据交换
接收方获取到json格式的数据后进行解析并使用。
#一个简单的json格式文件
dict11 = '''{"姓名":"关羽", "体重":"250","身高":"195"}'''
print(type(dict11))
>>><class 'str'>#本质上还是字符串
- json转为字典格式 -- loads()
import json#引用json库,专门用来处理json数据的
str11 = '''{"姓名":"关羽", "体重":"250","身高":"195"}'''
str11_dict = json.loads(str11)#json转为字典
print(str11_dict)
>>>{'姓名': '关羽', '体重': '250', '身高': '195'}
print(type(str11_dict))
>>><class 'dict'>#已经转为字典格式
- 字典转json格式 -- dumps()
import json
dict12 = {'姓名': '关羽', '体重': '250', '身高': '195'}
str11_dict = json.dumps(dict12,ensure_ascii=False)
#ensure_ascii=False可以解决中文乱码的问题
print(str11_dict)
>>>{"姓名": "关羽", "体重": "250", "身高": "195"}
print(type(str11_dict))
>>><class 'str'>已经转为json格式
注意:
字典与json格式有一个小的区别
json里面必须使用双引号,字典则单引号双引号都行