1、字典的作用
如果需要同时保存多个意义相同的数据就使用列表,如果需要同时保存多个意义不同的数据就使用字典
案例:定义一个变量保存一个学生的信息(姓名、年龄、姓名、性别、身高、体重、成绩)
stu = {'name':'小明','sex':'男','age':'30','height':'170','weight':'60','分数':'50'}
print(stu['name'])
2、什么是字典
1)字典是容器型数据类型;将{}作为容器的标志,里面多个键值对用逗号隔开:{键1:值1,键2:值2,…}
2)字典是可变的(支持增删改);字典是无序的(顺序不影响结果;不支持下标操作)
3)字典的元素:字典的元素只能是键值对,键(对值进行区分和说明):键必须是不可变类型的数据;键是唯一,值没有要求
2.1 空字典
dict1 = {}
2.2 字典是无序的
print({'a':10,'c':20,'b':5} == {'c':20,'b':5,'a':10})
2.3 字典的键必须是不可变类型的数据
不可变类型数据:数字、字符串、布尔、空值、元组
dict2 = {'a':10,1:20,True:20} #报错
2.4 键是唯一的
dict3 = {'a':10,'c':20,'b':5,'a':20}
print(dict3)
3、查字典
字典的查是获取字典的值
3.1 查单个
获取字典中某个键对应的值
- 字典[键] -获取字典中指定键对应的值,如果不存在程序报错
- 字典.get(键) -获取字典中指定键对应的值,如果不存在返回None
- 字典.get(键,默认值) -获取字典中指定键对应的值,如果不存在返回默认值
dog = {'name':'旺财','age':3,'weight':20,'gender':'公','breed':'马尔济斯'}
print(dog['name'])
# print(dog['cplor']) #报错
print(dog.get('name'))
print(dog.get('color'))
print(dog.get('color','hongse'))
print(dog.get('name','xipi'))
3.2 生活中的字典
案例:定义一个变量保存一个班级的信息
4、字典的增删改
4.1 增
添加键值对
- 字典[键] = 值 如果键不存在就在字典中添加键值对;如果键已经存在就修改字典中指定键对应的值为指定的值
dog = {'name':'财财','breed':'泰迪','age':2}
print(dog)
dog['color'] = '黄色'
print(dog)
- 字典.setdefault(键,值) 如果键不存在就添加键值对,如果键存在就不添加也不会修改
dog.setdefault('weight',10)
print(dog)
4.2 删
- del 字典[键] 删除字典中指定键对应的键值对
del dog['breed']
print(dog)
- 字典.pop(键) 取走字典中指定键对应的值并且返回
result=dog.pop('age')
print(dog)
print(result)
4.3 改
- 字典[键] = 值
dog['breed'] = '马尔济斯'
print(dog)
5、字典的相关操作
注意:python中字典不支持加法、乘法、比较大小
- in和not in
'''
数据 in 字典 判断字典中是否存在指定数据对应的值
'''
dict1 = {'a':20,'b':10,'c':60}
print(20 in dict1) #False
print('a' in dict1) #True
6、字典相关函数
max、min、sorted、sum这些函数作用于字典的时候是针对字典的键进行操作的,没有现实意义!
- len(字典) -统计字典中键值对个数
print(len(dict1)) #3
- dict(数据) -将指定数据转换成字典
'''
数据的要求:
a、数据本身是一个序列
b、序列中的元素必须是有且只有两个元素的小序列
c、小序列中的第一个元素必须是不可变类型的数据
'''
print(dict([('a',10),('b',20),('c',30)]))
data1=['ab','cd','12']
print(dict(data1))
# data2=[10,20,30,40]
# print(dict(data2)) #报错
注意:将字典转换成别的序列的时候,是将字典的键作为新序列中的元素
dict1 = {'a':20,'b':10,'c':60}
print(list(dict1))
7、字典相关方法
字典.xxx()
- 字典.clear()
#清空字典
dog = {'name':'财财','breed':'泰迪','age':2}
dog.clear()
print(dog)
- 字典.copy()
#复制字典常见一个一模一样的新字典并且返回
dog2 = dog.copy()
print(dog2)
- 字典.keys()
#获取字典所有的键,返回一个新序列
print(dog.keys()) #dict_keys(['name', 'breed', 'age'])
- 字典.values()
#获取字典所有的值,返回一个新的序列
print(dog.values()) #dict_values(['财财', '泰迪', 2])
- 字典.items()
#将字典的所有键值对转换成元组,返回一个新的序列
print(dog.items()) #dict_items([('name', '财财'), ('breed', '泰迪'), ('age', 2)])
- 字典1.update(字典2)
#将字典2中所有的键值对都添加到字典1中
dog1 = {'name':'财财','breed':'泰迪','age':2}
print(dog1)
dog2 = {'name':'贝贝','breed':'马尔济斯','age':2}
dog1.update(dog2)
print(dog1)
8、字典的推导式
'''
结构1:{表达式1:表达式2 for 变量 in 序列}
'''
resault = {x: x*2 for x in range(5)}
print(resault)
#{0: 0, 1: 2, 2: 4, 3: 6, 4: 8}
dict1 = {'a': 10, 'b': 20, 'c': 30}
resault={dict1[x]:x for x in dict1}
print(resault)
#{10: 'a', 20: 'b', 30: 'c'}
#遍历字典,遍历依次取到的是字典所有的键
for x in dict1:
print(x,dict1[x])
'''
结构2:
{表达式1:表达式2 for 变量 in 序列 if 条件语句}
'''