集合
可变类型
集合的特点
①集合具有无序,不重复的性质
②集合不支持索引
③集合能去除重复数据
集合的创建
#创建有数据集合
set1 = {1, 2, 3, 44, 5, "张三", "李四"}
set2 = set("1234'张三'")
print(set1)
print(set2) # >>>{'张', '三', "'", '4', '3', '1', '2'} 将字符串各个数据添加到集合,并将结果随机排序打印
# 创建空集合
set3 = set()
print(set3)
>>>set()
集合的常见操作
增加
# add()
set4 = {1, 2, 3, "张三", "李四"}
print(id(set4))
set4.add("王五")
set4.add(1) # 当集合中存在时,不进行任何操作
print(set4) # 打印结果元素随机排序
print(id(set4)) # id和修改前id相同,为可变类型
#update()
set5 = {1, 2, 3, "张三"}
list1 = [4, 5, 6, "李四"]
var1 = "789"
set5.update(list1)
print(set5) # >>>{1, 2, 3, 4, '张三', 5, 6, '李四'} 结果将列表中元素逐一添加到集合中
set5.update(var1)
print(set5) # >>>{1, 2, 3, 4, 5, 6, '9', '李四', '7', '张三', '8'} 结果将字符串元素逐一添加到集合中
删除数据
set1 = {1, 2, 3, 44, 5, "张三", "李四"}
#remove():删除集合中的指定数据,如果数据不存在则报错。
set1.remove("张三")
print(set1)
# set1.remove("坤哥") # 数据不存在集合时,报错
#discard():删除集合中的指定数据,如果数据不存在也不会报错。
set1.discard(1)
print(set1)
set1.discard("坤哥") # 数据不存在时集合时,不报错
#pop() 随机删除数据,并返回数据
print(set1.pop()) # 或者 a = set1.pop() print(a)
print(set1)
#clear():清空集合
set1 = {1, 2, 3, 44, 5, "张三", "李四"}
set1.clear()
print(set1) # >>>set()
查找数据
#in 和 (not in)
set6 = {1,2,4}
print(2 in set6) #True
print("坤哥" in set6) #False
print(2 not in set6) #False
print("坤哥" not in set6) #True
字典
可变类型
字典的应用场景
思考:一个班级,100人,如何快速存储姓名,性别,年龄?
字典⾥⾯的数据是以键值对形式出现,字典数据和数据顺序没有关系,即字典不⽀持下标,后期⽆论数据如何变化,只需要按照对应的键的名字查找数据即可。
姓名:张三,年龄:22,性别:男
姓名:李四,年龄:21,性别:男
姓名:王五,年龄:24,性别:男
姓名:阿坤,年龄:25,性别:男
字典的创建
符号为⼤括号
数据为键值对形式出现
各个键值对之间⽤逗号隔开
# 有数据的字典的创建
dict1 = {"name": "张三", "age": "18", "sex": "男", "love": "跳舞"}
# 空字典的创建
dict2 = {}
dict3 = dict()
#注意:⼀般称冒号前⾯的为键(key),简称k;冒号后⾯的为值(value),简称v。
字典的常见操作
增加数据
写法:字典序列[key] = 值
dict1 = {"name": "张三", "age": "18", "sex": "男", "love": "跳舞"}
dict1["love1"] = "唱歌"
print(dict1)
dict1["love"] = "只因" # 存在,修改
print(dict1)
#键存在则修改该键对应的值,若不存在则添加
删除数据
#del : 删除字典或删除字典中指定键值对
dict1 = {"name": "张三", "age": "18", "sex": "男", "love": "跳舞"}
print(dict1)
del dict1["love"]
print(dict1)
del dict1 # 删除字典
# print(dict1) # 报错
#clear(): 清空字典
dict1 = {"name": "张三", "age": "18", "sex": "男", "love": "跳舞"}
print(dict1)
dict1.clear() # 清空字典
print(dict1) # >> {}
修改数据
写法:字典序列[key] = 值
dict1 = {"name": "张三", "age": "18", "sex": "男", "love": "跳舞"}
dict1["name"] = "李四"
print(dict1)
#注:如果key存在则修改这个key对应的值 ;如果key不存在则新增此键值对
查找数据
#key根据键查找值
dict1 = {"name": "张三", "age": "18", "sex": "男", "love": "跳舞"}
print(dict1["name"])
print(dict1["age"])
print(dict1["sex"])
# print(dict1["id"]) # 若键不存在,则报错
#get()
# 字典序列.get(key, 默认值) 若键不存在返回默认值(默认为空None)
dict1 = {"name": "张三", "age": "18", "sex": "男", "love": "跳舞"}
a = dict1.get("name")
b = dict1.get("id", 180) # 键id不存在,返回180
c = dict1.get("id") # 键id不存在,返回None
print(a, b, c)
#keys():查找所有的键
dict1 = {"name": "张三", "age": "18", "sex": "男", "love": "跳舞"}
a = dict1.keys()
print(a)
>>>dict_keys(['name', 'age', 'sex', 'love'])
#values():查找所有的值
b = dict1.values()
print(b)
>>>dict_values(['张三', '18', '男', '跳舞'])
#items():查找所有的键值对
c = dict1.items()
print(c)
>>>dict_items([('name', '张三'), ('age', '18'), ('sex', '男'), ('love', '跳舞')])
字典的遍历
for循环
# 遍历若有的键
dict1 = {"name": "张三", "age": "18", "sex": "男", "love": "跳舞"}
# 方法一
for data in dict1.keys():
print(data, end=" ")
print()
#方法二
for data in dict1:
print(data, end=" ")
print()
# 遍历所有的值
for data in dict1.values():
print(data, end=" ")
print()
# 遍历所有的键值对
for data in dict1.items():
print(data)
拆包
# 拆包
list1 = ["张三", "李四"]
tul1 = ("张三", "李四")
set1 = {"张三", "李四"}
a, b = list1
print(a, b)
c, d = tul1
print(c, d)
e, f = set1
print(e, f) # 集合拆包随机分配
可变类型
dict1 = {"name": "张三", "age": "18", "sex": "男", "love": "跳舞"}
print(id(dict1))
dict1["love1"] = "唱歌"
print(id(dict1)) # 修改前和修改后内存地址不变,则为可变类型