字典的表达式 dict = {}
字典是无序的、是以key:value形式存储数据
1、字典的定义
第一种定义方法
dict1 = {'name':'xiaowang','age':18}
print(dict1)
print(type(dict1)) # 数据类型为:字典 <class 'dict'>
第二种定义方法
test = [('name','xiaowang'),('age',18)]
dict1 = dict(test) # 通过dict方法把一个列表转换为字典
print(dict1) # {'name': 'xiaowang', 'age': 18}
print(type(dict1)) # 数据类型为:字典 <class 'dict'>
2、字典当中的常用的函数
2.1、增加、修改 键值对
dict1 = {'name':'xiaowang','age':18}
dict1['class'] = 2008
print(dict1)
dict1['age'] = 16 # 当原字典当中存在设置的键时、会对之前的数据进行覆盖
print(dict1)
2.2、keys 取出字典中的键 ==》for是遍历的意思
dict1 = {'name':'xiaowang','age':18}
for i in dict1.keys():
print(i) # 结果:name age
2.3、values 取出字典中的值
dict1 = {'name':'xiaowang','age':18}
for i in dict1.values():
print(i) # xiaowang 18
2.4、取出键对应的值
dict1 = {'name':'xiaowang','age':18}
print(dict1['name']) # xiaowang
2.5、setdefault 设置键值对
dict1 = {'name':'xiaowang','age':18}
dict1.setdefault('class') # 只设置键 {'name': 'xiaowang', 'age': 18, 'class': None}
print(dict1)
dict1.setdefault('class',2008)
print(dict1)
dict1.setdefault('name','xiaochen') # 当原字典当中存在设置的键时、设置的键值对无效
print(dict1)
2.6、del 删除键值对
dict1 = {'name':'xiaowang','age':18}
del dict1['name']
print(dict1) #{'age': 18}
2.7、del 删除字典
dict1 = {'name':'xiaowang','age':18}
del dict1 # 全部删除
print(dict1) # NameError: name 'dict1' is not defined 字典没有定义
2.8、items 对字典进行for循环遍历
dict1 = {'name':'xiaowang','age':18}
for i in dict1:
print(i,dict1[i]) # dict1[i] 就是通过i这个键拿到对应的值
# 对字典进行for循环遍历
dict1 = {'name':'xiaowang','age':18}
for k,v in dict1.items():
print(k,v)
dict1 = {'name':'xiaowang','age':18}
for i in dict1.items():
print(i)
print(type(i)) # <class 'tuple'>
2.9、pop函数 删除(不能索引位删除)
dict1 = {'name':'xiaowang','age':18}
print(dict1.pop('name')) # 返回的是删除的这个键对应的值 xiaowang
print(dict1) # {'age': 18} # 返回的是删除了之后剩余的值
2.10、clear函数 全部删除键值对
dict1 = {'name':'xiaowang','age':18}
dict1.clear()
print(dict1) # 结果为:{}
2.11、get函数 通过对应的键拿到对应的值
dict1 = {'name':'xiaowang','age':18}
print(dict1.get('name')) # xiaowang
print(dict1.get('age')) # 18
print(dict1.get('age1')) # None 不存在返回空
2.12、fromkeys函数 给具体的键指定值
dict1 = {'name':'xiaowang','age':18}
dict2 = {}.fromkeys(['name','age']) # 初始化一个字典
dict2['name'] = 'zhangsan'
print(dict2) # {'name': 'zhangsan', 'age': None}
print({}.fromkeys(['name','age'])) # {'name': None, 'age': None}
print({}.fromkeys(['name','age'],'test')) # {'name': 'test', 'age': 'test'}
2.13、contains函数 判断字典是否包含指定的键
dict1 = {'name':'xiaowang','age':18}
print(dict1.__contains__('name')) # True
if dict1.__contains__('name1') is True:
print('存在此键')
else:
dict1.setdefault('name1','test') # 设置键值
print(dict1)
2.14、popitem函数 随机删除 一般是删除最后
dict1 = {'name':'xiaowang','age':18}
# 用法一:
dict1.popitem()
print(dict1) # 打印剩下的 结果:{'name': 'xiaowang'}
# 用法二:
print(dict1.popitem()) # 打印删除的 结果:('name', 'xiaowang')
print(dict1)
2.15、update函数 利用一个字典更新另外一个字典
dict1 = {'name':'xiaowang','age':18}
dict2 = {'name':'xiaochen'}
# dict2 = {'class':2008}
dict1.update(dict2) # 如果要更新的元素项在原字典里存在,则把原来的项覆盖
print(dict1)
json字符串和字典的区别:
json: (JavaScript Object Notation)的首字母缩写,字面的意思是(javascript对象表示法),这里说的json指的是类似于javascript对象的一种数据格式对象,目前这种数据格式比较流行,逐渐替换掉了传统的xml数据格式, 前端使用ajax的时候后台返回该前端的数据格式就是json格式的。
字典:是一种数据结构,而json是一种数据格式, 格式就会有一些形式上的限制,比如json的格式要求必须且只能使用双引号作为key或者值的边界符号(值如果是数字可以不用加双引号),不能使用单引号,用单引号或者不用引号会导致读取数据错误,而且“key”必须使用边界符(双引号),但字典就无所谓了,可以使用单引号,也可以使用双引号。
1、字典的类型是字典dict,是一种数据结构;json的类型是字符串str,json是一种格式; 接口测试是传参数payload时有时候是传的字符串,应该将payload的类型改为json
2、python dict 字符串用单引号,json强制规定双引
3、 json值可以是新的键值对(多层嵌套结构),字典的值一般只能是数值、文本
4、 json键名允许重复,字典不允许
5、结构相似,都是键值对