day08字典和元组学习总结

1.三目运算符

1. C 和JAVA的三目运算符

?

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

2. python的三目运算符

if else

表达式2 if 表达式1 else 表达式3先判断表达式1的结束是否为True,如果为True整个运算的结果是表达式2是值,否则是表达式3的值
age = 3
result = '成年' if age >= 18 else '未成年'
print(result)

2.什么是元组(tuple)

1.元组是容器型数据类型

将()作为容器的标志,里面多个元素用逗号隔开:(数据1, 数据2, 数据3,…)

元组不可变的(不支持增删改);元组有序的(支持下标操作)

任何类型的数据都可以作为元组的元素

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

1)空元组
t1 = ()
print(type(t1), len(t1))
2)单个元素的元组

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

t2 = (18)
print(t2, type(t2), len(t2))
3)元组中有多个元素
t3 = (23, 'abc', 1.23)
print(t3)       # (23, 'abc', 1.23)

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

t4 = 100, 200, 300
print(t4, type(t4))      #(100, 200, 300) <class 'tuple'>

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)

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.认识字典

1.列表和字典的选择问题

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

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

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

stu = [‘小明’, ‘男’, ‘1928392310’, 34, 89, 160, 62]

print(stu[0])

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

2. 什么是字典( dict )

字典是容器型数据类型;

将{}作为容器标志,里面多个键值对(键: 值)用括号:{键1:值1, 键2:值2, 键3:值3, …}

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

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

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

​ 值 - 没有要求

1) 空字典
d1 = {}

print(d1)
2)字典无序
print({'a': 10, 'b': 20} == {'b': 20, 'a': 10})         # True
print((10, 20) == (20, 10))     # False
3) 键必须是不可变类型的数据
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}      # 报错!
4) 键是唯一
d1 = {'a': 10, 'b': 20, 'c': 30, 'a': 100}
print(d1)       # {'a': 100, 'b': 20, 'c': 30}

4.查

1.查单个

获取字典某一个值

1)字典[键]

获取字典中指定键对应的值

2)字典.get(键)

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

3)字典.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))

2.生活中的数据

案例:定义一个变量保存一个班级的信息
print('------------------------------------华丽的分割线-----------------------------------')
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']['name'], 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)

3.遍历

for 变量 in 字典:

​ 循环体

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

print('------------------------------------华丽的分割线-----------------------------------')
dog = {'name': '旺财', 'age': 3, 'gender': '母狗', 'type': '土狗'}
for x in dog:
    print(x, dog[x])

5.字典的增删改

1.增、改

1)字典[键] = 值

如果键存在就修改指定键对应的值; 如果不存在就添加键对应的值

2)字典.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)

2.删

1) del 字典[键]

删除指定键对应的键值对

2)字典.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)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值