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

20220601 字典与元组学习总结

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

20220601 字典与元组学习总结

20220601 字典与元组学习总结 1.三目运算符

1.1三目运算符

1.1.1 C和JAVA的三目运算符 - ?:

表达式1?表达式2:表达式3 - 先判断表达式1的结果是否是True,如果为True整个运算的结果是表达式2是值,否则是表达式3的值
条件语句?值1:值2

1.1.2 python的三目运算符 if else
表达式2 if 表达式1 else 表达式3 - 先判断表达式1的结果是否是True,如果为True整个运算的结果是表达式2是值,否则是表达式3的值
值1 if 条件语句 else 值2

age = int(input('请输入一个数值:'))
result = '成年' if age >=18 else '未成年'
print(result)
2.元组

2.1 什么是元组

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

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

2.1.1 空元组

t1 = ()
print(type(t1),len(t1))# 0

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

t2 = (18,)
print(type(t2), len(t2))# 1

2.1.3 元组中有多个元素
在没有歧义的情况下,元组的()可以省略

t3 = 23, 'abc', 1.23
print(t3, type(t3), len(t3))#(23, 'abc', 1.23)  3

2.2 元组是不可变的列表

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

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)#100 200 300
3.认识字典

3.1 列表和字典的选择问题

如果同时保存的多个数据的意义相同就使用列表
如果同时保存的多个数据的意义不同,就使用字典(因为字典键的存在可以对值进行注解和说明)

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

stu = ['娜娜', '女', '123456789']
print(stu)#['娜娜', '女', '123456789']
print(stu[0])#娜娜

stu = {'name': '娜娜','性别':'女', '学号': '123456789'}
print(stu['name'])#娜娜

3.2 什么是字典(dict)

字典是容器型数据类型数据
将{}作为容器的标志,里面多花个键值对(键:值)用逗号:{键1:值1,键2:值2,键3:值3,键4:值4}
字典是可变(支持增删改);字典是无序的(不支持下标操作)

字典对元素的要求:元素必须是键值对
键 - 只有不可变的类型的数据才可以作为字典(元组,字符串,数字),一般用字符串;键是唯一的。
值 - 没有要求

3.2.1 空字典

d1 = {}
print(d1)#{}

3.2.2 字典无序

print({'a':20, 'b':10} == {'b':10, 'a':20})#True

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

d1 = {10:20, 'abc':30, (10.20):40}
print(d1)#{10: 20, 'abc': 30, 10.2: 40}


d1 = {10:20, 'abc':30, [10.20]:40}
print(d1)#报错!因为[10.20]是可变的!

3.2.4 键是唯一的

d1 = {10:20, 10:30, (10.20):40}
print(d1)#{10: 30, 10.2: 40}
4.查

4.1 查单个

获取字典某一个值

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

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

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

dog = {'name': '旺财', 'age': 3, 'gender': '母狗','type':'土狗'}
print(dog['age'],dog['type'])#3 土狗
print(dog.get('name'))#旺财
# print(dog['weight']) #报错
print(dog.get('weight')) #None
print(dog.get('weight',6)) #6

4.2 生活中案例数据

# 案例:定义一个变量保存一个班级的信息
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.get('name'))
# 2)打印班主任的名字和电话
T = dict(cl.get('head_teacher'))
print(T.get('name'),T.get('tel'))
# 3)打印讲师的名字和年龄
L = cl.get('lecturer')
print(L.get('name'),L.get('age'))
# 4)打印所有学生名字
S = cl.get('students')
N = []
for i in S:
    N.append(i.get('name'))
print(N)
# 5)打印所有学生的联系人的名字
S = cl.get('students')
N = []
for i in S:
    j = i.get('linkman')
    N.append(j['name'])
print(N)
# 6)统计学生中男生和女生的人数(计算男女的比例)
S = cl.get('students')
count_m = 0
count_w = 0
for i in S:
    j = i.get('gender')
    if j == '男':
        count_m += 1
    else:
        count_w += 1
print(count_m,count_w)
# 7)计算班级学生的平均分和及格率
S = cl.get('students')
S_s = 0
H_C = 0
S_C = 0
for i in S:
    F = int(i.get('score'))
    if F >= 60:
       H_C += 1

    S_s += F
    S_C += 1
print('合格率:',H_C/S_C)
print('平均分:',S_s/S_C)
# 8)将所有不及格的分数全部修改成60分
for stu in cl['students']:
    if stu['score'] < 60:
        stu['score'] = 60

print(cl)

4.3 遍历

for 变量 in 字典:

​ 循环体
​

注意:变量依次获取的是字典的键

dog = {'name': '旺财', 'age': 3, 'gender': '母狗', 'type': '土狗'}
for x in dog:
    print(x, dog[x])
'''
name 旺财
age 3
gender 母狗
type 土狗
'''
5.增删改

5.1 增.改

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

字典.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)#[{'name': '蛋黄粽子', 'price': 9.0, 'weight': 300, 'discount': 0.8}, {'name': '红豆粽子', 'price': 6.0, 'weight': 300, 'discount': 1}, {'name': '腊肉粽子', 'price': 8.0, 'weight': 300, 'discount': 0.9}, {'name': '白粽子', 'price': 3.0, 'weight': 300, 'discount': 1}]

5.2 删
del 字典[键] - 删除指定键对应的键值对
字典.pop(键) - 取出指定键对应的值

goods = {'name': '蛋黄粽子', 'price': 6.0, 'weight': 300, 'count': 10, 'discount': 0.8}
del goods['weight']
print(goods)#{'name': '蛋黄粽子', 'price': 6.0, 'count': 10, 'discount': 0.8}

result = goods.pop('count')
print(goods, result)#{'name': '蛋黄粽子', 'price': 6.0, 'discount': 0.8} 10
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/942888.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

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

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