字典
1.用变量获取元素
1.使用多个变量同时获取列表或者元组的元素
要求:变量的个数必须和元组、列表元素的个数保持一致
t1 = (1, 2, 3, 4, 5) a, b, c, d, e = t1 print(a, b, c, d, e) # 1 2 [3, 4, 5]
2.使用多个变量同时获取列表或者元组的元素
#当变量的个数小于元素的个数,必须在某一个变量前面加*
#获取的时候先让不带好的按顺序获取对应的数据,再把剩下的给带号的变量中
t1 = (1, 2, 3, 4, 5) x, y, *z = t1 print(x, y, z) # 1 2 [3, 4, 5] a, *b, c = t1 print(a, b, c) # 1 [2, 3, 4] 5
3,元组在没有歧义的情况下。()可以省略。
t2 = 10, 20, 30 print(t2, type(t2)) # (10, 20, 30) <class 'tuple'>
2.认识字典
#定义一个变量,保存一个学生的信息
#当需要保存多个意义不同的数据的时候,就使用字典
#1,什么是字典(dict)
""" 1.字典是容器型数据类型(序列);将{}作为容器的标志,里面多个键值对用逗号隔开(一个键值对就是一个元素) {键1:值1,键2:值2,键3:值3} 2.字典是可变的(支持增删改);字典无序 3.元素的要求 - 元素是键值对 键的要求:只有不可变类型的数据可以作为建,一般使用字符串,唯一性 值的要求:没有要求 """
空字典
d1 = {} print(type(d1)) # <class 'dict'>
字典无序
print({‘a’: 30, ‘n’: 90} == { ‘n’: 90, ‘a’: 30}) # True
键必须是不可变的数据
d2 = {'k': 0, 'j': 23, [qw]: 90} # NameError: name 'qw' is not defined print(d2)
#键是唯一的
d3 = {'a': 12, 'v': 34, 'f': 89, 'a': 120} print(d3) # {'a': 120, 'v': 34, 'f': 89}
3.字典的增删改查
#1. 查
#1)查单个
""" 字典['键'] - 获取指定键对应的值 字典.get(键) - 获取指定键对应的值,建不存在返回None 字典.get(键,默认值) - 获取指定键对应的值,建不存在返回默认值 """
stu = {'name': '阿三', 'age': 19, "gender": '男'} print(stu['name']) print(stu['gender']) print(stu.get('name')) print(stu.get('age')) print(stu.get('chinese',0)) # None stu = [ {'name': '阿三', 'age': 19, "gender": '男','score': 90}, {'name': '阿1', 'age': 29, "gender": '男'}, {'name': '阿2', 'age': 12, "gender": '女','score': 80}, {'name': '阿3', 'age': 11, "gender": '男','score': 93}, ]
求平均年龄
age = 0 for i in stu: age += i['age'] print(age / len(stu))
求总分
sum1 = 0 for i in stu: sum1 += i.get('score',0) print(sum1)
2) 遍历
""" for 变量 in 字典: pass 循环出来的是键 """
for i in stu: for j in i: print(j) break
2.增,改
""" 字典[键] = 值 - 如果键存在就修改指定键值,如果不存在就添加键值对 字典.setdefault(键,值) - 只添加 不修改 不会覆盖 """ stu = {'name': '阿三', 'age': 19, "gender": '男'} stu.setdefault('height',178) print(stu) stu = [ {'name': '阿三', 'age': 19, "gender": '男', 'score': 90}, {'name': '阿1', 'age': 29, "gender": '男'}, {'name': '阿2', 'age': 12, "gender": '女', 'score': 80}, {'name': '阿3', 'age': 11, "gender": '男', 'score': 93}, ] for i in stu: i.setdefault('score', 0) print(stu)
3、删 - 删除键值对
""" 1) del 字典[键] - 删除指定的键值对 2)字典.pop(键) - 取出指定键值对 """
# 1. 运算符 # 相对列表,字典不支持:+、*、比大小
4. 相关函数
""" dict(数据) - 将数据转换成字典 对数据的要求: 1) 这个数据必须是一个序列 2) 序列中的元素必须是 "有且只有两个元素" 的小序列,并且第一个元素中是不可变的元素 """
x = ['as',range(2),(12,34)] result = dict(x) print(result)
2. 相关方法
""" 1) 字典.clear() - 清空字典 2) 字典.copy() - 复制字典,产生一个一模一样的新字典,地址不一样 2) 字典.keys() - 获取字典所有的"键",返回一个新的 "序列" 2) 字典.values() - 获取字典所有的"值",返回一个新的"序列" 2) 字典.items() - 获取所有的键和值,每一个键值对对应一个"元组",返回一个新的序列 2) 字典.copy() - """ """ # 字典.items() dog = {'name': '二哈', 'age': 4, '毛色': 'blue'} for key,value in dog.items(): print(key,value,sep=' : ') """
# 练习:使用列表推导式交换字典的键和值 dict1 = {10: 20, 'a': 'b', 'c': 30} # {20: 10, 'b': 'a', 30: 'c'}
# 字典推导式 dict2 = {10: 20, 'a': 'b', 'c': 30} print({value: key for key, value in dict2.items()}) """ {a:b for 变量 in 序列} {a:b for 变量 in 序列 if 条件语句} """
4) 字典1.update(字典2) - 将字典2中都添加到字典1中