在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基础还有文件读写操作
还没讲,我们放在基础爬虫篇后,爬虫得到的数据我们往文件中运行,爬到的数据就保存下来了。