集合
集合的定义:
变量名称 = {元素,元素}
变量名称 = set()
首先,因为集合是无序的,所以集合不支持,下标索引访问。
但是集合和列表一样,是允许修改的。
#定义一个集合
my_set = {"python", "java", "go", "php", "shell"}
empty = set()
集合的特点:
-
可以容纳多个数据
-
可以容纳不同类型的数据
-
数据是无序存储的
-
不允许重复数据存在
-
可以修改
-
支持for循环
集合的操作
-
添加新元素
语法:集合.add(元素)
结果:集合本身被修改,添加了新元素
my_set = {"python", "java", "go", "php", "shell"}
my_set.add("c")
print(my_set) #{'python', 'c', 'shell', 'php', 'go', 'java'}
-
移除元素
语法:集合.remove(元素) ,将指定元素,从集合内移除
my_set.remove("python")
print(my_set) #{'java', 'c', 'shell', 'go', 'php'}
-
从集合中随机取出元素
语法:集合.pop(),从集合中随机取出一个元素
my_set.pop()
print(my_set) #{'java', 'go', 'c', 'php'}
-
清空集合
语法:集合.clear(),功能,清空集合
my_set.clear()
print(my_set)
-
取出2个集合的差集
语法:集合1.difference(集合2),功能:取出集合1和集合2的差集,集合1有集合2没有,得到一个新的集合,集合1和集合2不变。
set1 = {1,2,3}
set2 = {1,4,5}
set3 = set1.difference(set2)
print(set3) #{2, 3}
-
消除2个集合的差集
语法:集合1.difference_upate(集合2)
功能:对比集合1和集合2,在集合1内,删除和集合2相同的元素
结果:集合1被修改,集合2不变
set1.difference_update(set2)
print(set1) #{2, 3}
print(set2) #{1, 4, 5}
-
2个集合合并为一个
语法:集合1.union(集合2)
功能:将集合1和集合2组合成新集合
set1 = {1,2,3}
set2 = {1,4,5}
set4 = set1.union(set2)
print(set4) #{1, 2, 3, 4, 5}
-
统计集合元素的数量
print(len(set1))
print(len(set2))
print(len(set4))
集合的遍历
集合不支持下标索引,不能使用while循环
for i in set4:print(i)
字典
字典的特点
-
可以容纳多个数据
-
可以容纳不同类型的数据
-
每一份数据是keyvalue键值对
-
可以通过key获取到value,key不可重复
-
不支持下标索引
-
可以修改
-
支持for循环,不支持while循环
字典的定义
同样使用{},不过存储的元素是一个个的:键值对
#定义字典
dict = {"wyx": 99, "sxx": 60, "第三者": 100}
dict2 = {}#从字典中基于key获取value
s = dict["wyx"]
print(s) #99#定义嵌套字典
stu_dict = {"wyx":{"语文":80,"数学":90,"英语":88},"sxx":{"语文": 23,"数学": 44,"英语": 55}
}
print(stu_dict)
#{'wyx': {'语文': 80, '数学': 90, '英语': 88}, 'sxx': {'语文': 23, '数学': 44, '英语': 55}}
stus = stu_dict["sxx"]["语文"]
print(stus) #23
字典的常用操作
-
新增元素
语法:字典[key] = value,结果:字典被修改,新增了元素
dict = {"wyx": 99, "sxx": 60}
dict["py"] = 88
print(dict) #{'wyx': 99, 'sxx': 60, 'py': 88}
-
更新元素
语法:字典[key] = value, 结果:字典被修改,元素被更新
#{'wyx': 99, 'sxx': 60, 'py': 88}
dict["py"] = 77
print(dict) #{'wyx': 99, 'sxx': 60, 'py': 77}
-
删除方法
语法:字典.pop(key), 结果:获得指定key的value,同时字典被修改,指定key的数据被删除
dict = {"wyx": 99, "sxx": 60}
value = dict.pop("wyx")
print(value) #99
print(dict) #{'sxx': 60}
-
清空元素
语法:字典.clear(),结果:字典被修改,元素被清空
dict = {"wyx": 99, "sxx": 60}
dict.clear()
print(dict)
-
获取全部key
语法:字典.keys(), 结果:得到字典中全部的key
dict = {"wyx": 99, "sxx": 60}
keys = dict.keys()
print(keys) #dict_keys(['wyx', 'sxx'])
字典的遍历
for循环遍历
dict = {"wyx": 99, "sxx": 60}
keys = dict.keys()
print(keys) #dict_keys(['wyx', 'sxx'])for key in keys:print(f"字典的key是{key}")print(f"字典的value是{dict[key]}")
#字典的key是wyx
字典的value是99
字典的key是sxx
字典的value是60
for key in dict:print(key)print(dict[key])
#wyx
99
sxx
60
数据容器的总结对比
数据容器的分类
-
是否支持下标索引
-
支持:列表,元组,字符串-序列类型
-
不支持:集合,字典-非序列类型
-
是否支持重复元素
-
支持:列表,元组,字符串-序列类型
-
不支持:集合,字典-非序列类型
-
是否可以修改
-
支持:列表,集合,字典
-
不支持:元组,字符串
应用场景分析·
-
列表:一批数据,可修改,可重复的存储场景
-
元组:一批数据,不可修改,可重复的存储场景
-
字符串:一串字符串的存储场景
-
集合:一批数据,去重存储场景
-
字典:一批数据,可用key检索value的存储场景
容器的排序功能
语法:sorted(容器,[reverse=true])
dict = {"wyx": 99, "sxx": 60}
print(sorted(dict)) #['sxx', 'wyx']
print(sorted(dict,reverse=True)) #将结果反转['wyx', 'sxx']