字典的相关知识二

day12下创建一个名为03-字典的增删改查的代码文件。

首先,我们创建一个空字典:

dict1 = {}
print(dict1, type(dict1))
一、向字典中添加元素
1、直接添加:如果字典中不存在某个键,直接添加能将这个键值对添加进去
dict1['name'] = '张三'
print(dict1)
2、setdefault:向字典中添加键值对,如果这个键已经存在,不做修改;如果不存在,就添加到字典中
dict1.setdefault('name', '李四')
dict1.setdefault('age', 66)
print(dict1)
3、update:更新字典中的元素

1)传入一个字典

dict1.update({'address': '地球村', 'sex': '男'})
print(dict1)

2)传入关键字,可以在update方法中传入key=value

dict1.update(english = 66)

3)传入一个包含一个或多个二元组的列表

dict1.update([('math', 0), ('chinese', 100)])
print(dict1)

print('--------------------------------------------------------')
打印结果为:

在这里插入图片描述

二、字典中元素的查找:通过键获取值(确保键是存在的)
print(dict1['name'])
三、字典的修改:如果字典中已经存在某个键,这种写法是修改这个键对应的值
dict1['张三'] = '法外狂徒张三'
print(dict1)

使用update修改键对应的值,确保这个键是存在的,否则是向字典中添加元素

dict1.update({'age': 10})
print(dict1)
打印结果为:

在这里插入图片描述

四、删除操作

1)del 字典['键'],删除字典中指定键对应的键值对(如果键不存在,报错)

del dict1['sex']

2)字典.pop(键):从字典中删除指定的键值对,返回删除的key对应的值

result = dict1.pop('english')
print(result)
print(dict1)

3)clear:清空字典

dict1.clear()
print(dict1)
打印结果为:

在这里插入图片描述

day12下创建一个名为04-推导式的代码文件。

不仅仅列表有推导式,元组、集合、字典也都有

list1 = [i for i in range(1, 11)]
list2 = [i for i in range(1, 11) if i % 2 == 0]

如果for循环表示次数,把变量i改为_

import random
list3 = [[random.randint(1, 100) for _ in range(3)] for _ in range(5)]
list4 = [f'{i} * {j} = {i * j}' for i in range(1, 10) for j in range(1, i + 1)]

从列表推导式,换个容器符号就是元组,集合推导式的写法,字典推导式不仅需要换容器符号,还需要换添加元素的表达式,需要构造成key:value的形式

dict1 = {i: i ** 2 for i in range(10)}
print(dict1)

dict2 = {f'{i} * {j}': i * j for i in range(1, 10) for j in range(1, i + 1)}
print(dict2)

day12下创建一个名为05-字典练习题的代码文件。

1、声明一个列表,在列表中保存6个学生的信息

stu = [
    {'name': '小明', 'age': 18, 'score': 80, 'tel': '1234', 'sex': '男'},
    {'name': '小刚', 'age': 17, 'score': 70, 'tel': '12399', 'sex': '女'},
    {'name': '小红', 'age': 19, 'score': 90, 'tel': '1237', 'sex': '性别不明'},
    {'name': '小强', 'age': 20, 'score': 55, 'tel': '1236', 'sex': '男'},
    {'name': '小李', 'age': 15, 'score': 40, 'tel': '1235', 'sex': '女'},
    {'name': '小王', 'age': 21, 'score': 95, 'tel': '1238', 'sex': '性别不明'}
]
1、统计不及格学生的个数 -->通过键获取值
num = 0
for i in stu:
    if i['score'] < 60:
        num += 1
print(num)

用列表推导式,暂时不用元组推导式

print(len([i for i in stu if i['score'] < 60]))
打印结果为:

在这里插入图片描述

2、打印不及格学生的名字和对应的成绩
for i in stu:
    if i['score'] < 60:
        print(i['name'], i['score'])

使用列表推导式

dict1 = {i['name']: i['score'] for i in stu if i['score'] < 60}
print(dict1)

字典中键是独一无二的,所以如果遇到重名学生怎么办

list1 = [(i['name'], i['score']) for i in stu if i['score'] < 60]
print(list1)

print('--------------------------------------------------------------------------')
打印结果为:

在这里插入图片描述

3、统计未成年学生的个数
num = 0
for i in stu:
    if i['age'] < 18:
        num += 1
print(num)
4、打印手机尾号是8的学生的名字
for i in stu:
    if i['tel'][-1] == '8':  #通过下标获取元素
        print(i['name'])
print([i['name'] for i in stu if i['tel'][-1] == '8'])
5、打印最高分和对应的学生的名字
maxScore = stu[0]['score']
name = stu[0]['name']
for i in stu[1:]:
    if i['score'] > maxScore:
        maxScore = i['score']
        name = i['name']
print(maxScore, name)

# dict2 = {i['score']: i['name'] for i in stu}
# print(max(dict2), name)
打印结果为:

在这里插入图片描述

6、删除性别不明的所有学生

列表的长度比最后一个下标大一

start = 0
while start < len(stu):
    if stu[start]['sex'] == '性别不明':
        del stu[start]
    else:
        start += 1
print(stu)

# for i in stu:
#     if i['sex'] == '性别不明':
#         stu.remove(i)
# print(stu)

# print([i for i in stu if i['sex'] != '性别不明'])
打印结果如下:

在这里插入图片描述

  学了那么久的基础知识确实挺枯燥的哈,下一期我们就进入大家都很期待的爬虫篇!!!

  另外,python基础还有文件读写操作还没讲,我们放在基础爬虫篇后,爬虫得到的数据我们往文件中运行,爬到的数据就保存下来了。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值