第八天课程总结 -字典
一、用变量获取元素
1.使用多个变量同时获取列表或者元组的元素
要求变量的个数必须和元组/列表元素的个数保持一致,例如:
t1 = (10, 20, 30, 40)
a, b, c, d = t1
print(a, b, c, d)
point = (10, 89)
x, y = point
2.使用多个变量同时获取列表或者元组的元素
当变量的个数小于元素的个数的时候,必须在某一个变量前加*
获取的时候先让不带的变量按照顺序获取对应的数据,把剩下的全部保存到带的变量中
list1 = [10, 20, 30, 40, 50, 60]
x, y, *z = list1
print(x, y, z) # 10 20 [30, 40, 50, 60]
x, *y, z = list1
print(x, z, y) # 10 60 [20, 30, 40, 50]
*x, y, z = list1
print(y, z, x) # 50 60 [10, 20, 30, 40]
x, *y, z, t = list1
print(y) # [20, 30, 40]
student = ('小明', 18, '男', 89, 78, 99)
name, age, gender, *scores = student
print(name, age, gender, scores)
- 元组在没有歧义的情况下,()可以省略
二、字典存在的意义
当需要保存多个意义不同的数据的时候,就使用字典(列表大都用于保存一样数据类型的变量)
1.什么是字典(dict)
1)字典是容器型数据类型(序列); 将{}作为容器的标志,里面多个键值对用逗号隔开(一个键值对就是一个元素):{键1:值1, 键2:值2,…}
2)字典是可变的(支持增删改);字典无序(不支持下标操作)
3)元素的要求 - 元素是键值对
键的要求:只有不可变类型的数据可以作为键,一般使用字符串(做到见名知义);键唯一
值的要求:没有要求
空字典
d1 = {}
print(d1, type(d1)) # {} <class 'dict'>
字典无序
print({'a': 10, 'b': 20} == {'b': 20, 'a': 10}) # True
键必须是不可变的数据
d2 = {'a': 10, 10: 20, (1, 2): 30}
print(d2) # {'a': 10, 10: 20, (1, 2): 30}
键是唯一的
三、字典的增删改查
-
查 - 获取值
1)查单个
字典[键] - 获取指定键对应的值,键不存报错!
字典.get(键) - 获取指定键对应的值,键不存在返回None
字典.get(键, 默认值) - 获取指定键对应的值,键不存在返回指定默认值
stu = {'name': '小明', 'age': 20, 'gender': '男', 'tel': '110'}
print(stu['name'])
print(stu['tel'])
print(stu.get('name'))
print(stu.get('tel'))
print(stu.get('score')) # None
print(stu.get('score', 0))
2)遍历(了解)
语法:
for 键 in 字典:
pass
stu = {'name': '小明', 'age': 20, 'gender': '男', 'tel': '110'}
for x in stu:
print('x:', x, stu[x])
-
增、改
字典[键] = 值 - 如果键存在就修改指定键对应的值;如果键不存在就添加键值对
字典.setdefault(键, 值) - 添加键值对(只添加不修改)
stu = {'name': '小明', 'age': 20, 'gender': '男', 'tel': '110'}
# 键存在就修改
stu['name'] = '小花'
print(stu) # {'name': '小花', 'age': 20, 'gender': '男', 'tel': '110'}
# 键不存在就添加
stu['score'] = 100
print(stu) # {'name': '小花', 'age': 20, 'gender': '男', 'tel': '110', 'score': 100}
- 删 - 删除键值对
- del 字典[键] - 删除指定键对应的键值对
- 字典.pop(键) - 取出指定键对应的值
四、字典相关操作函数和方法
dict(数据) - 将数据转换成字典
数据的要求:
-
这个数据必须是一个序列
-
序列中元素必须是有且只有两个元素的小序列, 两个元素中第一个元素是不可变的数据,比如:
x = ['ab', range(2), (10, 20)] result = dict(x) print(result) # {'a': 'b', 0: 1, 10: 20}
-
相关方法
-
字典.clear() - 清空字典
-
字典.copy() - 赋值字典产生一个一模一样的新字典(地址不同)
3)字典.values() - 获取字典所有的值,返回一个新的序列
字典.keys() - 获取字典所有的键,返回一个新的序列
字典.items() - 获取所有的键和值,每一个键值对对应一个元组,返回一个新的序列
dog = {'name': '旺财', 'age': 2, 'color': '黄色', 'breed': '土狗'}
print(dog.values()) # dict_values(['旺财', 2, '黄色', '土狗'])
print(dog.keys()) # dict_keys(['name', 'age', 'color', 'breed'])
print(dog.items()) # dict_items([('name', '旺财'), ('age', 2), ('color', '黄色'), ('breed', '土狗')])
字典推导
{表达式1:表达式2 for 变量 in 序列}
{表达式1:表达式2 for 变量 in 序列 if 条件语句}
result = {x: x*2 for x in range(5)}
print(result) # {0:0, 1:2, 2:4, 3:6, 4:8}
result = {x: x*2 for x in range(5) if x % 2}
print(result) # {1:2, 3:6}