一、元组
1. 元组就是不可变的列表
1)元素可以是任何类型的数据
tuple1 = (10, "abc", True, 10+20*3, [1, 2])
print(tuple1) # (10, 'abc', True, 70, [1, 2])
2) 列表获取元素的方法都适用于元组
3) 列表相关操作和方法都适用于元组
2. 元组特有的一些方法和功能
1)只有一个元素的元组
()中唯一的元素后需要添加逗号
list1 = [100]
print(type(list1)) # <class 'list'>
tuple1 = (100)
print(type(tuple1)) # <class 'int'>
tuple1 = (100,)
print(type(tuple1), tuple1) # <class 'tuple'>
2)直接多个数据用逗号隔开表示的也是一个元组
元组的括号在没有歧义的时候可以省略
tuple2 = (100, 200, 300)
tuple3 = 100, 200, 300
print(type(tuple3), tuple3) # <class 'tuple'> (100, 200, 300)
tuple4 = (100, 200, 300) + (20, 30)
3)获取元素的时候可以通过让变量的个数和元组中元素的个数保持一致,来分别获取元组中每个每个元素的值
point = (100, 200)
x, y = point
print(x, y) # 100 200
point = (100, 200, 300)
x, y, z = point
print(x, y, z) # 100 200 300
a, b, c = 10, 20, 30 # a,b,c = (10, 20, 30)
4)让变量个数少于元组中元素的个数,并且在一个变量前加*
先让没有*号的变量一次获取元素,然后把剩下的所有怨妇作为一个列表返回
stu = ('小明', 30, '男', 89, 78, 56, 100)
name, age, gender, *scores = stu
print(name, age, gender) # 小明 30 男
print(scores) # [89, 78, 56, 100]
二、字典
1.什么是字典(dict)
字典是容器型数据类型的数据,将{}作为容器的标志,里面多个元素用逗号隔开(其中元素必须是键值对)
{键1:值1, 键2:值2, 键3:值3, …}
字典是可变的(支持增删改);字典是无序的(不支持下标操作)
字典的元素:键是不可变的,唯一的;值可以是任何类型的数据,并且可以重复
练习: 定义一个字典,保存一条的狗的信息,包括:名字、品种、颜色、年龄
dog1 = {
'name': '贝贝',
'bread': '土狗',
'color': '黄色',
'age': 1
}
2.元素的增删改查
1)查 - 获取字典的值
获取单个值
1.字典[key] - 获取字典中指定key对应的值(如果key不存在,会报错)
2.字典.get(key) - 获取字典中指定key对应的值(如果key不存在,不会报错,返回None)
3.字典.get(key, 默认值) - 获取字典中指定key对应的值(如果key不存在,不会报错,返回默认值)
movie1 = {
'name': '战狼',
'director': '吴京',
'actor': '吴京',
'release_time': '2015',
'kind': '动作/战争/军事'
}
movie2 = {
'name': '沉默的羔羊',
'director': '乔纳森·戴米',
'actor': '茱迪·福斯特,安东尼·霍普金斯',
'release_time': '1991',
'kind': '惊悚'
}
print(movie1['name'])
print(movie1['kind'])
print(movie2['name'])
# print(movie1['score']) # KeyError: 'score'
print(movie2.get('kind')) # 惊悚
print(movie2.get('score')) # None
print(movie2.get('release_time', '2020-1-1')) # 1991
print(movie2.get('score', 1)) # 1
遍历字典
方法一:
for 变量 in 字典:
循环体(变量在循环体中得到的是字典的key)
for x in movie1:
print(x, movie1[x])
方法二:
for 变量1,变量2 in 字典.items():
循环体(循环体中变量1取到的所有的键,变量2取到的是所有键对应的值)
print(movie1.items())
for x, y in movie1.items():
print(x, y)
2)增/改 - 添加键值对/修改键值对的值
字典[key] = 值 - 当key不存在就是添加键值对;当key存在的时候就是修改key对应的值
subject = {
'name': 'Python',
'score': 3,
'class_hour': 20,
'direction': ['数据分析', 'web后端', '爬虫', '自动测试', '自动化运维']
}
print(subject)
subject['teacher'] = '余婷'
print(subject)
subject['score'] = 4
print(subject)
3) 删
del 字典[key] - 删除字典指定key对应的键值对
字典.pop(key) - 取出字典中指定key对应的值
del subject['class_hour']
print(subject)
del_item = subject.pop('direction')
print(subject)
print(del_item)
三、字典的相关操作和方法
1.相关操作
1)字典不支持加法、乘法和比较大小的运算
2)判断数据本身是否相等: ==, !=
is - 判断两个数据的地址是否相等
3)in 和 not in
key in 字典 - 判断字典中是否有指定的key
4)相关函数: len、dict
len(字典) - 获取字典中键值对的个数
dict(数据) - 将其他数据转换成字典
数据的要求: 1.序列 2.序列中的元素还是序列 3.内部的序列有且只有两个元素,第一个元素不可变
将字典转换成其他数据
1)将字典转换成列表/元组 - 将字典的key作为列表/元组的元素
stu = {'name': '小明', 'age': 18, 'score': 100}
print(list(stu)) # ['name', 'age', 'score']
print(tuple(stu)) # ('name', 'age', 'score')
将字典转换成字符串
print(str(stu)) # "{'name': '小明', 'age': 18, 'score': 100}"
将字典转换成布尔
print(bool({})) # False
print(bool(stu)) # True
2.相关方法
1)字典.clear()
stu = {'name': '小明', 'age': 18, 'score': 100}
stu.clear()
print(stu) # {}
2)字典.copy()
stu = {'name': '小明', 'age': 18, 'score': 100}
stu1 = stu
stu['name'] = '小花'
print(stu1) # {'name': '小花', 'age': 18, 'score': 100}
stu = {'name': '小明', 'age': 18, 'score': 100}
stu2 = stu.copy()
print(stu2) # {'name': '小明', 'age': 18, 'score': 100}
stu['name'] = '小花'
print(stu2) # {'name': '小明', 'age': 18, 'score': 100}
3)dict.fromkeys(序列, 默认值=None)
创建一个新的字典,序列中所有的元素会作为新字典的key, 默认值是所有key对应的值
ew_dict = dict.fromkeys('abc')
print(new_dict) # {'a': None, 'b': None, 'c': None}
new_dict = dict.fromkeys(['name', 'age', 'sex'], 0)
print(new_dict) # {'name': 0, 'age': 0, 'sex': 0}
new_dict = dict.fromkeys(['name', 'age', 'sex'], ['张三', 19, '男'])
print(new_dict)
4)字典.items()、字典.keys()、字典.values()
stu = {'name': '小明', 'age': 18, 'score': 100}
print(stu.items()) # dict_items([('name', '小明'), ('age', 18), ('score', 100)])
print(stu.keys()) # dict_keys(['name', 'age', 'score'])
print(stu.values()) # dict_values(['小明', 18, 100])
5) 字典.setdefault(key, value)
在字典中添加键值对(单纯的添加键值对,不会修改)
stu = {'name': '小明', 'age': 18, 'score': 100}
stu.setdefault('weight', 50)
print(stu) # {'name': '小明', 'age': 18, 'score': 100, 'weight': 50}
stu.setdefault('name', '小花')
print(stu) # {'name': '小明', 'age': 18, 'score': 100, 'weight': 50}
6) 字典1.update(字典2)
将字典2中所有的键值对全部添加到字典1中
stu.update({'a': 10, 'b': 20})
print(stu) # {'name': '小明', 'age': 18, 'score': 100, 'weight': 50, 'a': 10, 'b': 20}