10.19元组与字典
认识元组
元组是容器型数据类型(序列),将()作为容器的标志,里面多个元素用逗号隔开:(元素1, 元素2, 元素3,…)
元组不可变(不支持增删改);元组是有序的(支持下标操作)
其中的元素可以是任何类型的数据
空元组
t1 = ()
print(t1, type(t1))
元组就是不可变的列表
列表中和可变无关的操作,元组都支持
查找
t2 = ('长津湖', '战狼', '我是特种兵', '阿凡达', '悬崖上的金鱼姬')
print(t2[-1], t2[0], t2[1]) # 悬崖上的金鱼姬 长津湖 战狼
print(t2[2:]) # ('我是特种兵', '阿凡达', '悬崖上的金鱼姬')
for x in t3:
print(x)
for index in range(len(t3)):
print(index, t3[index]) #遍历查找
其他相关操作
t1 = (10, 20, 30)
t2 = (111, 222)
print(t1 + t2) # (10, 20, 30, 111, 222)
print(t1 * 2) # (10, 20, 30, 10, 20, 30)
print((10, 20, 30) == (20, 10, 30)) # False
print((100, 1, 1000) > (100, 2, -3003)) # False
print(10 in t1) # True
元组相关函数
# max、min、sum、sored、len、tuple
t1 = (34, 56, 89, 1, 90, 32)
print(max(t1), min(t1), sum(t1), len(t1))
print(sorted(t1)) # [1, 32, 34, 56, 89, 90]
print(tuple('abc')) # ('a', 'b', 'c') 将输出方式变成元组
相关方法
元组不支持拷贝,不可变数据在内存中存储的时候同一个数据只会存一份
a = [10, 20, 30]
b = [10, 20, 30]
print(id(a), id(b))#2321692112960 2321692113152
a = (10, 20, 30)
b = (10, 20, 30)
print(id(a), id(b))#2321687618176 2321687618176
t1 = (34, 56, 89, 1, 90, 32)
print(t1.count(34))#元素出现次数 1
print(t1.index(89))#元素下标 2
元组不只是不可变的列表
只有一个元素的元组表示方式为:(元素,)
t1 = (10,)
print(t1, type(t1))# tuple
元组的()在没有歧义的情况下可以省略
t1 = 10, 20, 30
print(t1, type(t1)) #tuple
使用多个变量直接获取元素(元组和列表都支持)
让变量的个数和元组元素的个数保持一致
t1 = (100, 200, 300)
x, y, z = t1
print(x, y, z)
pos = (200, 45)
x, y = pos
print(x, y)
让变量的个数小于元组中元素的个数, 这个时候必须在某一个变量前加*
此时获取元素的时候先让没有的变量按照位置获取相应的数据,然后再将剩下的数据全部给带的变量(变*的变量会变成一个列表)
t1 = ('小明', '男', 18, 170, 90, 87, 56)
name, *x = t1
print(name, x) # 小明 ['男', 18, 170, 90, 87, 56]
认识字典
字典存在的意义
定义一个变量保存一个学生的信息:姓名、年龄、身高、体重、成绩等
列表:保存的多个数据意义相同,例如:保存10个学生,10个姓名…
字典:保存多个意义不同的数据,例如:年龄、身高、体重 或者 语文、数学、英文的成绩…
什么是字典(dict)
字典是容器型数据类型(序列),将{}作为容器的标志,里面多个键值对用逗号(一个键值对就是字典的一个元素):{键1:值1, 键2:值2,…}
字典是可变的(支持增删改);字典无序(不支持下标操作)
元素 - 字典的元素必须是键值对
键 - 必须是不可变的数据,一般用字符串
值 - 任何类型的数据都可以作为字典的值
空字典形式为:dict1 = {}
字典的键必须是不可变类型的数据,且列表和字典不能作为键,但是值可以为任何类型的数据
字典的增删查改
查找
查单个
字典[键] - 获取指定键对应的值, 键不存在会报错
字典.get(键) - 获取指定键对应的值,键不存在不会报错返回None
字典.get(键, 默认值) - 获取指定键对应的值,键不存在不会报错返回默认值
student = {'name': '余婷', 'age': 18, 'height': 155, 'weight': 51, '语文': 80, '数学': 95, '英语': 55}
print(student['name']) #余婷
print(student['数学']) #95
print(student.get('name')) #余婷
print(student.get('数学')) #95
key = 'height'
print(student[key])#155
# print(student['gender']) # KeyError: 'gender'
print(student.get('gender')) # None
print(student.get('gender', '男')) # 男
遍历
for 键 in 字典:
循环体
student = {'name': '余婷', 'age': 18, 'height': 155, 'weight': 51, '语文': 80, '数学': 95, '英语': 55}
for key in student:
print(key, student[key]) #
增加与修改
字典[键] = 值 - 当键不存在的时候就添加键值对;当键存在的时候就修改键对应的值
字典.setdefault(键, 值) - 键不存在的时候添加键值对,存在的时候不作为
dog = {'name': '财财', 'age': 3, 'breed': '金毛'}
print(dog) #{'name': '财财', 'age': 3, 'breed': '金毛'}
dog['gender'] = '母狗'
print(dog) #{'name': '财财', 'age': 3, 'breed': '金毛','gender':'母狗'}
dog['name'] = '旺财'
print(dog) # {'name': '旺财', 'age': 3, 'breed': '金毛', 'gender': '母狗'}
dogs = [
{'name': '大黄', 'age': 3, 'breed': '金毛'},
{'name': '狗1', 'age': 1, 'breed': '土狗'},
{'name': '狗2', 'breed': '土狗'},
{'name': '狗3', 'breed': '土狗'},
]
for dog in dogs:
# dog['age'] = 0
dog.setdefault('age', 0)
print(dogs) # [{'name': '大黄', 'age': 3, 'breed': '金毛'}, {'name': '狗1', 'age': 1, 'breed': '土狗'}, {'name': '狗2', 'breed': '土狗', 'age': 0}, {'name': '狗3', 'breed': '土狗', 'age': 0}]
删除
del 字典[键] - 删除指定键对应的键值对
字典.pop(键) - 取出指定键对应的值,并且返回
student = {'name': '余婷', 'age': 18, 'height': 155, 'weight': 51, '语文': 80, '数学': 95, '英语': 55}
del student['weight']
print(student) # {'name': '余婷', 'age': 18, 'height': 155, '语文': 80, '数学': 95, '英语': 55}
result = student.pop('height')
print(student, result) # {'name': '余婷', 'age': 18, '语文': 80, '数学': 95, '英语': 55} 155
字典相关函数与操作方法
相关操作
字典不支持+、*、>、<、>=、<=,支持in和not in
键 in 字典 - 判断字典中是否存在指定的键
d1 = {'a': 10, 'b': 20, 'c': 30}
print(10 in d1) # False
print('b' in d1) # True
相关函数
max、min、sum、sorted字典都支持,但是一般不用(操作对象都是键)。
len(字典) - 求键的个数
dict(数据) - 将指定数据转换成字典。数据必须满足以下要求:
数据本身是一个序列
序列中的元素是有且只有两个元素的小序列
小序列中的第一个元素必须是不可变的数据
PS:将字典转换成列表或者元组的时候
d1 = {'a': 10, 'b': 20, 'c': 30}
list1 = list(d1)
print(list1) # ['a', 'b', 'c']
字典相关方法
字典.clear() 清空
字典.copy() 拷贝
字典.keys() - 获取所有的键, 返回一个序列
字典.values() - 获取所有的值, 返回一个序列
字典.items() - 将字典的键值对转换成元组,以序列的形式返回
d1 = {'a': 10, 'b': 20, 'c': 30}
print(d1.keys()) # dict_keys(['a', 'b', 'c'])
print(d1.values()) # dict_values([10, 20, 30])
print(d1.items()) # dict_items([('a', 10), ('b', 20), ('c', 30)])
list1 = [10, 20, 45, 'abc']
for x in list1:
print('x:', x)
#x: 10 x: 20 x: 45 x: abc
list1 = [('a', 10), ('b', 20), ('c', 30)]
for x in list1:
print('x:', x)
#x: ('a', 10) x: ('b', 20) x: ('c', 30)
for x, y in list1:
print(x, y)
#a 10 b 20 c 30
for key, value in d1.items():
print(key, value)
# a 10 b 20 c 30
字典.update(序列) - 将序列中的元素作为键值对添加到字典(序列必须是能够转换成字典的序列)
字典1.update(字典2) - 将字典2中的键值对全部添加字典1中
d1 = {'a': 10, 'b': 20}
d1.update({'c': 100, 'd': 200})
print(d1) # {'a': 10, 'b': 20, 'c': 100, 'd': 200}
本文介绍了Python中的元组和字典。元组是不可变的序列,类似于列表但不支持增删改操作。元组可以用在无歧义的情况下省略括号。字典是一种可变的容器,用于存储键值对,键必须是不可变类型,字典提供了增删查改等操作。通过字典的get方法和setdefault方法可以安全地访问和更新键值对。
220

被折叠的 条评论
为什么被折叠?



