数据容器-set集合(不允许重复,乱序)
定义:{元素1,元素2,元素3}
set()
无序-不支持下标索引 和列表一样允许修改
#定义集合
my_set={"哈基米","胖宝宝","hajimi","哈基米"}
my_set_empty=set()
print(f"my_set的内容是:{my_set},类型是:{type(my_set)}") #my_set的内容是:{'胖宝宝', 'hajimi', '哈基米'},类型是:<class 'set'>
print(f"my_set_empty的内容是:{my_set_empty},类型是:{type(my_set_empty)}") #my_set_empty的内容是:set(),类型是:<class 'set'>
#添加新元素
my_set.add("python")
my_set.add("胖宝宝") #重复的无法添加
print(f"my_set添加元素后的结果为:{my_set}") #my_set添加元素后的结果为:{'哈基米', 'python', '胖宝宝', 'hajimi'}
#移除元素
my_set.remove("hajimi")
print(f"my_set移除元素后的结果为:{my_set}")
#随机取出一个元素
my_set={"哈基米","胖宝宝","hajimi"}
element=my_set.pop()
print(f"集合中被取出的元素为:{element},取出元素后的集合为:{my_set}")#集合中被取出的元素为:胖宝宝,取出元素后的集合为:{'哈基米', 'hajimi'}
#清空集合
my_set={"哈基米","胖宝宝","hajimi"}
my_set.clear()
print(f"集合清空后结果为{my_set}")
#取两个集合的差集
set1={1,2,3}
set2={1,4,5}
set3=set1.difference((set2)) #set1中有而set2中没有的
print(f"取出差集后的结果为:{set3}") #取出差集后的结果为:{2, 3}
print(f"取出差集后,原set1的内容为:{set1}") #不变
print(f"取出差集后,原set2的内容为:{set2}") #不变
#消除差集
#语法:集合1.difference_update(集合2)
#功能:对比集合1,2 在集合1内删除和集合2相同的元素
set1={1,2,3}
set2={1,4,5}
set1.difference_update(set2)
print(f"消除差集后集合1的结果为:{set1}") #消除差集后集合1的结果为:{2, 3}
print(f"消除差集后集合2的结果为:{set2}") #不变
#两个集合合并为1个
set1={1,2,3}
set2={1,5,6}
set3=set1.union(set2)
print(f"合并后set3的结果为:{set3}") #合并后set3的结果为:{1, 2, 3, 5, 6}
print(f"合并后set2的结果为:{set2}") #不变
#统计集合元素数量len()
set1={1,2,3,4,5,1,2,3,4,5}
num=len(set1)
print(f"集合内的元素数量有:{num}") #5个
#集合的遍历-不能用while循环,因为集合不支持下标索引,可用for循环
set1={1,2,3,4,5}
for element in set1:
print(f"集合中的元素有:{element}")
#案例-信息去重
#定义一个空集合 通过for循环遍历列表,在for循环中将列表元素添加至集合,最终得到元素去重后的集合对象,并打印输出
my_list=["哈基米","胖宝宝","哈基米","it"]
my_set=set()
for element in my_list:
my_set.add(element)
print(f"集合添加后的结果为:{my_set}")
数据容器-字典
每一份数据都是key-value键值对
功能:通过key找到value key不可重复
定义:{}同集合,不过存储的元素是一个个:键值对
{key:value,key:value,key:value,key:value}一个元素
my_dicy={key:value,key:value,key:value,key:value}
#定义空字典
my_dict={}
my_dict=dict()
字典的key和value可以为任何类型(key不可为字典) 所以字典可以嵌套
#定义字典
my_dict1={"旺旺":23,"呵呵":56,"滴滴":89}
#定义空字典
my_dict2={}
my_dict3 = dict()
print(f"my_dict1的内容为:{my_dict1},类型是{type(my_dict1)}")
print(f"my_dict2的内容为:{my_dict2},类型是{type(my_dict2)}")
print(f"my_dict3的内容为:{my_dict3},类型是{type(my_dict3)}")
#定义重复的字典
my_dict1={"旺旺":23,"旺旺":56,"滴滴":89}
print(f"my_dict1的内容为:{my_dict1}") #my_dict1的内容为:{'旺旺': 56, '滴滴': 89}
#从字典中基于key获取Value
my_dict1={"旺旺":23,"呵呵":56,"滴滴":89}
score=my_dict1["旺旺"]
print(f"旺旺的分数为:{score}") #23
#定义嵌套字典
# 姓名 语文 数学 英语
# 旺旺 23 34 45
# 呵呵 54 23 32
# 哈哈 87 43 24
stu_score_dict={
"旺旺":{
"语文":23,
"数学":34,
"英语":45
},"呵呵":{
"语文":54,
"数学":23,
"英语":32
},"哈哈":{
"语文":87,
"数学":43,
"英语":24
}
}
print(f"学生的信息是{stu_score_dict}")
#获取呵呵的语文成绩
score=stu_score_dict["呵呵"]["语文"]
print(f"呵呵的语文成绩为:{score}")
#获取哈哈的英语成绩
score=stu_score_dict["哈哈"]["英语"]
print(f"哈哈的英语成绩为: {score}")
字典的常用操作:
新增/更新元素 语法:字典[Key]=Value 若key为字典中已有的则元素被更新,若key不存在于字典中,则字典被修改新增了一个对。
删除元素 语法:字典.pop(Key)
清空字典 语法: 字典.clear()
获取全部的key 语法:字典.keys()
my_dict={"呵呵":21,"哈哈":43,"旺旺":98}
#新增元素
my_dict["哇哦"]=90
print(f"字典新增后,结果是:{my_dict}")
#更新元素
my_dict["呵呵"]=33
print(f"字典更新后,结果是:{my_dict}")
#删除元素
score=my_dict.pop("呵呵")
print(f"字典被移除了一个元素后结果是:{my_dict},呵呵的分数是:{score}")
#清空元素,clear
my_dict.clear()
print(f"字典被清空了,内容是:{my_dict}")
#获取全部的key
my_dict={"呵呵":21,"哈哈":43,"旺旺":98}
keys=my_dict.keys()
print(f"字典的全部key有:{keys}")
#遍历字典
#方式1 通过获取全部的key来完成遍历
for key in keys:
print(f"字典的key是:{key}")
print(f"字典的value是:{my_dict[key]}")
#方式2 直接对字典进行for循环,每一次循环都是直接得到key
for key in my_dict:
print(f"2字典的key是:{key}")
print(f"2字典的value是:{my_dict}")
#统计字典内的元素数量
num=len(my_dict)
print(f"字典中的元素数量有:{num}")
字典支持for循环不支持value循环
案例:
#案例
stu_my_dict={
"哈哈":{
"部门":"科技部",
"工资":3000,
"级别":1
},
"呵呵":{
"部门":"市场部",
"工资":5000,
"级别":2
},
"旺旺":{
"部门":"市场部",
"工资":"7000",
"级别":3
},
"对对":{
"部门":"科技部",
"工资":4000,
"级别":1
},
"勾勾":{
"部门":"市场部",
"工资":6000,
"级别":2
}
}
print(f"员工升值加薪前的结果是:{stu_my_dict}")
for name in stu_my_dict:
if stu_my_dict[name]["级别"]==1:
#获取员工信息字典
employee_info_dict=stu_my_dict[name]
#修改员工的信息
employee_info_dict["级别"]=2
employee_info_dict["工资"]+=1000
#将员工信息更新回stu
stu_my_dict[name]=employee_info_dict
print(f"员工升值加薪后的结果是:{stu_my_dict}")