集合与字典
4月11
创建集合
创建集合使用
{}
或set{}
,但是如果要创建空集合只能使用set()
,因为{}
用来创建空字典
s1 = {10, 20, 30, 40, 50}
print(s1)
s2 = {10, 30, 20, 10, 30, 40, 30, 50}
print(s2)
s3 = set('abcdaffd')
print(s3, type(s3))
s4 = set()
print(type(s4))
s5 = {}
print(type(s5))
- 集合可以去掉重复数据;
- 集合数据是⽆序的,故不⽀持下标
集合常见操作方法
添加数据
- add():
s1 = {10, 20}
s1.add(20)
print(s1)
s2 = {10, 20, 30}
s2.add("yuwen")
print(s2)
因为集合有去重功能,所以,当向集合内追加的数据是当前集合已有数据的话,则不进⾏任何操作
- update():追加的数据是序
s1 = {10, 20}
# s1.update(100) # 报错
s1.update([100, 200])
s1.update('abc')
print(s1)
删除数据
- remove():删除集合中的指定数据,如果数据不存在则报错
s1 = {10, 20}
s1.remove(10)
print(s1)
s1.remove(10)
print(s1)
- discard():删除集合中指定的数据,如果数据不存在不会报错
s1 = {1, 2, 3, 4}
s1.discard(1)
print(s1)
s1.discard(1)
- pop():随机删除集合中的一个数据,并返回一个数据
s1 = {10, 20, 30, 40, 50, 60}
num = s1.pop() #删除的数据
print(s1) #删除后的数据
print(num)
查找数据
in:判断数据在集合列表
not in:判断集合不在列表
字典的应用场景
一个班级,100人,如何快速的存储姓名,性别,年龄?
字典里面的数据是以键值对形式出现,字典数据和数据顺序没有关系,字典不支持下标,后期无论数据如何变化,只需要按照对应的键值名字查询数据即可。
姓名:张三,年龄:22,性别:男
姓名:李四,年龄:21,性别:男
姓名:王五,年龄:24,性别:男
姓名:阿坤,年龄:25,性别:男
创建字典
- 字符为大括号
- 数据为键值对形式
- 各个键值对之间用逗号隔开
dict1 = {'name': 'yuwen', 'age': 20, 'gender': '男'}
dict2 = {}
dict3 = dict()
字典常见操作
增加数据
写法:字典序列[key]=值
注意:如果key存在则修改这个key对应的值,如果key不存在则新增加一个键值对
dict1 = {'name': 'yuwen', 'age': 20, 'gender': '男'}
dict1['name'] = '李四' #修改一个存在的key
print(dict1)
dict1["id"] = 10 #修改一个不支持的key
print(dict1)
#输出结果
{'name': '李四', 'age': 20, 'gender': '男'} 1864852332032
{'name': '李四', 'age': 20, 'gender': '男', 'id': 10} 1864852332032
注意:输出结果可见,字典为可变类型,返回的id一样
删除数据
- add()/del:删除字典或者删除字典中指定键值对
dict1 = {'name': 'yuwen', 'age': 20, 'gender': '男'}
del dict1['gender']
print(dict1)
del dict1 #删除这个字典变量名
print(dict1)
#输出结果
{'name': 'yuwen', 'age': 20}
NameError: name 'dict1' is not defined
- clear():清除字典
dict1 = {'name': 'yuwen', 'age': 20, 'gender': '男'}
dict1.clear()
print(dict1)
#输出结果
{}
修改数据
写法:字典序列号[key]=值
注意: 如果key存在则修改这个key对应的值,如果不存在则新增加键值对
dict1 = {'name': 'yuwen', 'age': 20, 'gender': '男'}
dict1['name'] = '李四'
print(dict1)
#输出结果
{'name': '李四', 'age': 20, 'gender': '男'}
查找数据
key根据键查找值
dict1 = {'name': 'yuwen', 'age': 20, 'gender': '男'}
print(dict1['name'])
print(dict1['id']) #查询一个不在的key会报错
#输出结果
yuwen
KeyError: 'id'
- get()
# 字典序列.get(key, 默认值)
dict1 = {'name': 'yuwen', 'age': 20, 'gender': '男'}
print(dict1.get('name'))
print(dict1.get(id))
#输出结果
yuwen
None
- keys():查找所有的键
dict1 = {'name': 'yuwen', 'age': 20, 'gender': '男'}
print(dict1.keys())
#输出结果
dict_keys(['name', 'age', 'gender'])
- values():查找所有的值
dict1 = {'name': 'yuwen', 'age': 20, 'gender': '男'}
print(dict1.keys())
print(dict1.values())
#输出结果
dict_values(['yuwen', 20, '男'])
- items():查找所有的键值对
dict1 = {'name': 'yuwen', 'age': 20, 'gender': '男'}
print(dict1.items())
#输出结果
dict_items([('name', 'yuwen'), ('age', 20), ('gender', '男')])
字典的循环遍历
for循环
遍历字典key
dict1 = {'name': 'yuwen', 'age': 20, 'gender': '男'}
for key in dict1:
print(key)
#输出结果
name
age
gender
遍历字典的value
dict1 = {'name': 'yuwen', 'age': 20, 'gender': '男'}
for values in dict1.values():
print(values)
#输出结果
yuwen
20
男
遍历字典的元素
dict1 = {'name': 'yuwen', 'age': 20, 'gender': '男'}
for items in dict1.items():
print(items)
#输出结果
('name', 'yuwen')
('age', 20)
('gender', '男')
综合练习
1、本次考试张三60分, 李四80, 王五99分, 小宋56分, 请使用字典来表达此数据结构, 并筛选出来不及格的同学及分数
mark = {'张三': 60, '李四': 80, '王五': 99, '小宋': 56}
pass1 = {}
for itmes in mark.items():
if 60 > itmes[1]:
print(f"{itmes[0]} 同学不及格了")
#输出结果
小宋 同学不及格了