栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Day-8字典和元组

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Day-8字典和元组

Day-8字典和元组

1、三目运算符 - if else

表达式2 if 表达式1 else 表达式3 - 先判断表达式1的结束是否为True,如果为True整个运算的结果是表达式2是值,否则是表达式3的值

值1 if 条件语句 else 值2

age = 3
result = ‘成年’ if age >= 18 else ‘未成年’
print(result)


2、元组 - 元组是容器型数据类型

将( )作为容器的标志,里面多个元素用逗号隔开:(数据1、数据2、数据3…)元组是不可变的(不支持增删改)元组是有序的(支持下标操作)任何类型数据都可以作为元组的元素

空元组 T1 = ( )

print(type( T1) , len(T1) )

单个元素的元组

单个元素的元组中,唯一的元素后面必须添加逗号

T2 = (18 , )

print(T2 , type (T2) , len(T2) )

元组中有多个元素

t3 = (23, ‘abc’, 1.23)
print(t3) (23, ‘abc’, 1.23)

在没有歧义的情况下,元组的( ) 可以省略

t4 = 100, 200, 300
print(t4, type(t4)) (100, 200, 300)

元组是不可变的列表(列表中所有和可变无关的操作元组都支持:比如 查、相关操作、相关函数、和可变无关的相关)

使用场景:如果希望同时保存多个数据,并且要求数据保存只能使用不能修改,就可以使用元组。

t1 = (10, 29, 78, 67, 34)
print(t1[0], t1[-1])
print(t1[1:]) (29, 78, 67, 34)

元组获取元素的另外一个常见操作

t1 = (100, 200, 300)
x, y, z = t1
print(x, y, z)

x, y, z = 100, 200, 300

a = [10, 20, 30]

b = a

c = a.copy()

print(a is b, a == b) True

print(a is c, a == c) False

a = [10, 20]

b = [10, 20]

print(a is b) False

a = (10, 20)

b = (10, 20)

print(a is b) True

a = 123

b = 123

print(a is b) True

a = 123123

b = 123123

print(a is b) True


3、字典 - 定义一个变量保存多个数据

如果同时保存的多个数据的意义相同就是用列表

如果同时保存的多个数据的意义不同就是用字典(因为字典键的存在可以对值进行区分、注解和说明)

​ 例如:

定义一个变量同时保存一个学生的所有信息

stu = [‘小明’, ‘男’, ‘1928392310’, 34, 89, 160, 62]
print(stu[0])

stu = {‘name’: ‘小明’, ‘性别’: ‘男’, ‘电话’: ‘1928392310’, ‘年龄’: 34, ‘分数’: 89, ‘身高’: 160, ‘体重’: 62}
print(stu[‘name’])

字典是容器型数据类型;将{ }作为容器的标志,里面多个键值对{键1:值1,键2:值2,键3:值3…}用逗号:

字典是可变的(支持增删改);字典是无序的(不支持下标操作)

字典对元素的要求:元素必须是键值对

键 - 只有不可变的类型的数据才可以作为字典(元组、字符串、数字),一般使用字符串;键是唯一的

值 - 没有要求

空字典 - ZD1={ } print(ZD1)

字典无序

print({‘a’: 10, ‘b’: 20} == {‘b’: 20, ‘a’: 10}) True
print((10, 20) == (20, 10)) False

键必须是不可变类型的数据

d1 = {10: 20, ‘abc’: 30, (1, 2): 40}
print(d1) {10: 20, ‘abc’: 30, (1, 2): 40}

d1 = {10: 20, ‘abc’: 30, [1, 2]: 40} 报错!

键是唯一

d1 = {‘a’: 10, ‘b’: 20, ‘c’: 30, ‘a’: 100}
print(d1) {‘a’: 100, ‘b’: 20, ‘c’: 30}


4、查

查单个 - 获取字典某一个值

字典[键] - 获取字典中指定键对应的值,如果键不存在会报错!

字典.get(键) - 获取字典中指定键对应的值,如果键不存在不会报错返回None!

字典.get(键,默认值) - 获取字典中指定键对应的值,如果键不存在不会报错返回默认值!

dog = {‘name’: ‘旺财’, ‘age’: 3, ‘gender’: ‘母狗’, ‘type’: ‘土狗’}

print(dog[‘age’], dog[‘type’])
print(dog.get(‘name’))
print(dog.get(‘age’, 0))

print(dog[‘weight’]) KeyError: ‘weight’

print(dog.get(‘weight’)) None
print(dog.get(‘weight’, 10))

  1. 生活中数据

案例:定义一个变量保存一个班级的信息
cl = {
‘name’: ‘Python2203’,
‘address’: ‘11教室’,
‘lecturer’: {
‘name’: ‘余婷’,
‘age’: 18,
‘tel’: ‘13678192302’
},
‘head_teacher’: {
‘name’: ‘萌萌’,
‘tel’: ‘18726372389’,
‘QQ’: ‘728232’
},
‘students’: [
{‘name’: ‘stu1’, ‘age’: 19, ‘gender’: ‘男’, ‘score’: 89, ‘linkman’: {‘name’: ‘张三’, ‘tel’: ‘18293234233’}},
{‘name’: ‘stu2’, ‘age’: 30, ‘gender’: ‘女’, ‘score’: 76, ‘linkman’: {‘name’: ‘李四’, ‘tel’: ‘187282391011’}},
{‘name’: ‘stu3’, ‘age’: 18, ‘gender’: ‘女’, ‘score’: 57, ‘linkman’: {‘name’: ‘王二’, ‘tel’: ‘182932342101’}},
{‘name’: ‘stu4’, ‘age’: 16, ‘gender’: ‘女’, ‘score’: 72, ‘linkman’: {‘name’: ‘赵六’, ‘tel’: ‘18293234225’}},
{‘name’: ‘stu5’, ‘age’: 22, ‘gender’: ‘男’, ‘score’: 99, ‘linkman’: {‘name’: ‘程七’, ‘tel’: ‘18293234789’}},
{‘name’: ‘stu6’, ‘age’: 25, ‘gender’: ‘女’, ‘score’: 63, ‘linkman’: {‘name’: ‘何⑤’, ‘tel’: ‘18293234006’}},
{‘name’: ‘stu7’, ‘age’: 17, ‘gender’: ‘男’, ‘score’: 45, ‘linkman’: {‘name’: ‘李九’, ‘tel’: ‘18293234764’}}
]

}

1)打印班级的名称

print(cl[‘name’])

2)打印班主任的名字和电话

print(cl[‘head teacher’], cl[‘head teacher’[‘tel’]) # {‘name’: ‘萌萌’,‘tel’: ‘18726372389’,‘QQ’: ‘728232’}[‘name’] -> ‘萌萌’

teacher = {‘name’: ‘萌萌’, ‘tel’: ‘18726372389’, ‘QQ’: ‘728232’}

teacher = cl[‘head_teacher’]
print(teacher[‘name’], teacher[‘tel’])

3)打印讲师的名字和年龄

lecturer = cl[‘lecturer’]
print(lecturer[‘name’], lecturer[‘age’])

4)打印所有学生名字
all_students = cl[‘students’]
for stu in all_students:
print(stu[‘name’])

5)打印所有学生的联系人的名字
for stu in cl[‘students’]:
print(stu[‘linkman’[‘name’])

6)统计学生中男生和女生的人数(计算男女的比例)
b_count = g_count = 0
for stu in cl[‘students’]:
if stu[‘gender’] == ‘男’:
b_count += 1
else:
g_count += 1

print(b_count, g_count)

7)计算班级学生的平均分和及格率
total_score = stu_count = pass_count = 0
for stu in cl[‘students’]:

总人数加1

​ stu_count += 1

获取分数

​ score = stu[‘score’]

总分数加一个分数

​ total_score += score

统计及格人数

​ if score >= 60:
​ pass_count += 1
print(‘平均分:’, total_score / stu_count, ‘及格率:’, pass_count / stu_count)

8)将所有不及格的分数全部修改成60分

for stu in cl[‘students’]:
if stu[‘score’] < 60:
stu[‘score’] = 60

print(cl)

遍历

for 变量 in 字典:

​ 循环体 6

注意:变量依次获取的是字典的键
dog = {‘name’: ‘旺财’, ‘age’: 3, ‘gender’: ‘母狗’, ‘type’: ‘土狗’}
for x in dog:
print(x, dog[x])


5、字典中的增改删

字典[键] = 值 - 如果键存在就修改指定键对应的值;如果键不存在就添加键值对

字典.setdefault(键, 值) - 添加键值对(如果键已经存在了,不会去修改键的值)
goods = {‘name’: ‘蛋黄粽子’, ‘price’: 9.0, ‘weight’: 300}
print(goods) # {‘name’: ‘蛋黄粽子’, ‘price’: 9.0, ‘weight’: 300}

键存在就修改

goods[‘price’] = 6.0
print(goods) {‘name’: ‘蛋黄粽子’, ‘price’: 6.0, ‘weight’: 300}

键不存在就是增加

goods[‘count’] = 10
print(goods) {‘name’: ‘蛋黄粽子’, ‘price’: 6.0, ‘weight’: 300, ‘count’: 10}

goods.setdefault(‘discount’, 0.8)
print(goods) {‘name’: ‘蛋黄粽子’, ‘price’: 6.0, ‘weight’: 300, ‘count’: 10, ‘discount’: 0.8}

goods.setdefault(‘price’, 10)
print(goods) {‘name’: ‘蛋黄粽子’, ‘price’: 6.0, ‘weight’: 300, ‘count’: 10, ‘discount’: 0.8}

goods_list = [
{‘name’: ‘蛋黄粽子’, ‘price’: 9.0, ‘weight’: 300, ‘discount’: 0.8},
{‘name’: ‘红豆粽子’, ‘price’: 6.0, ‘weight’: 300},
{‘name’: ‘腊肉粽子’, ‘price’: 8.0, ‘weight’: 300, ‘discount’: 0.9},
{‘name’: ‘白粽子’, ‘price’: 3.0, ‘weight’: 300}
]
for x in goods_list:
x.setdefault(‘discount’, 1)

print(goods_list)

删

del 字典[键] - 删除指定键对应的键值对

字典.pop(键) - 取出指定键对应的值
goods = {‘name’: ‘蛋黄粽子’, ‘price’: 6.0, ‘weight’: 300, ‘count’: 10, ‘discount’: 0.8}
del goods[‘weight’]
print(goods)

result = goods.pop(‘count’)
print(goods, result)

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/942547.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号