学习总结week2_3

python容器型数据–字典

单目运算符: not
双目运算符: +、-、*、/、and、
三目运算符: if - else
表达式2 if 表达式1 else 表达式3

num = [23, 4, 67, 88, 90, 21]
nums = [x * 2 if x % 2 else x // 2 for x in num]
print(nums)

1.概念

字典是容器型数据类型,用{}作为标准
{键1:值1.键2:值2,…}
1.字典是可变的(支持增删改查)
2.字典是无序的(不支持下标操作)
3.元素的要求:字典的元素是键值对
键的要求:1.键必须是不可变类型,(一般字符串)2.键是唯一的
值的要求:无要求

定义一个变量,保存一个学生的信息

stu1 = {
    'name': '小明',
    'age': '28',
    'gender': '男'
}
print(stu1)

2)如果保存的多个数据意义相同用列表,反之用字典
空字典

dict1 = {}

键必须是不可变类型(数字,字符串,布尔,元组)–可变(字典,列表)

dict2 = {10: 20, 'a': 30, (10, 20): 55}

键是唯一的

dict3 = {'a': 10, 'a': 100}
print(dict3) # {'a': 100}

2.字典的查

查单个 - 获取字典某一个键对应的值

1.字典[键] - 获取字典中指定键对应的值,若键不存在会报错
2.字典.get(键) - 获取字典中指定键对应的值,若键不存在不报错,返回None
字典.get(键, 默认值) - 获取字典中指定键对应的值,若键不存在不报错,返回默认值

dog = {'name': '小白', 'age': 3, 'breed': '柴', 'gender':'母'}
print(dog['name'])

实际生活中的字典
例:定义一个变量保存一个班级的信息
班级名、位置、老师、班主任、学生

class1 = {
    'class_name': 'Python2204',
    'address': '15教',
    'lecturer': {'name': '余婷', 'age': 18, 'qq': '726550822', 'gender': '女'},
    'class_teacher': {'name': '静静', 'tel': '110'},
    'students': [
        {'name': 'stu1', 'age': 21, 'major': '会计', 'tel': '120', 'contacts': {'name': '张三', 'tel': '162723'}},
        {'name': 'stu2', 'age': 30, 'major': '电子', 'tel': '219223', 'contacts': {'name': '小明', 'tel': '281912'}},
        {'name': 'stu3', 'age': 19, 'major': '旅游管理', 'tel': '123233', 'contacts': {'name': '小花', 'tel': '886552'}},
        {'name': 'stu4', 'age': 25, 'major': '通信', 'tel': '4444221', 'contacts': {'name': '李四', 'tel': '22342345'}},
        {'name': 'stu5', 'age': 25, 'major': '机械', 'tel': '223111', 'contacts': {'name': '王五', 'tel': '555632'}},
        {'name': 'stu6', 'age': 23, 'major': '数学', 'tel': '234234', 'contacts': {'name': '赵六', 'tel': '96533'}}
    ]
}
# 1)打印班级的名字和教室
print(class1.get('class_name'))
print(class1.get('address'))
# 2) 打印班级讲师的名字和年龄
a = class1.get('lecturer')
print(a.get('name'))
print(a.get('age'))
# 3) 打印班主任的电话
print(class1['class_teacher'].get('tel'))
# 4) 打印所有的学生的名字
b = class1['students']
print([x.get('name')for x in b])
# 5)计算所有学生的平均年龄
b = class1['students']
count = sum1 = 0
for x in b:
    c = x.get('age')
    sum1 += c
    count += 1
print(sum1 / count)
# 6) 打印所有学生的联系人的名字
b = class1['students']
print([x['contacts'].get('name')for x in b])
# 7)打印所有联系人电话号码尾号是2的学生的名字
b = class1['students']
for x in b:
    c = x['contacts'].get('tel')
    if int(c) % 10 == 2:
        print(x.get('name'))

2.遍历字典

方法1:
for 变量 in 字典:
循环体(注意,取的是键)

方法2:
for 键,值 in 字典.items()

3.字典的增删改、函数、相关方法

1.改 - 修改某个键对应的值
1)字典[键] = 新值 - 将字典中指定键对应的值修改乘指定的新值

dog = {'name': '旺财', 'age': 3, 'breed': '土狗', 'gender': '母狗'}
dog['name'] = 'ww'

2.增 - 添加键对值
字典[键] = 新值
字典.setdefault(键, 值)- 在指定的字典添加键值对,键存在不会修改已存在的值

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

print(dog.pop('name'))
print("--------------------分割线--------------------")

4.字典不支持 +、-、*、/、> 等
1). in 和 not in - 判断字典中是否存在指定的键
键 in 字典

2).相关函数 len dict
sum 不用—求的是键的值

1.len(字典) - 获取字典中键对值的数量
2.dict(数据) - 将指定的数据转换为字典
要求:
1.数据本身是一个序列
2.序列中的元素必须是有两个元素的小序列
3.小序列的第一个元素必须是不可变类型的数据

ps:字典转换为列表时,是将字典所有的键作为列表的元素

5.字典相关方法:字典.xxx()
字典.keys() - 获取字典所有的键,返回一个序列
字典.values() - 获取字典所有的值,返回一个序列
字典.items() - 将字典转换为一个序列,并将每一个键值对转换成一个元组
字典1.update(字典2) - 将字典2中所有的键对值都添加到字典1

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值