Python - 基本数据类型详解3(集合、字典)
作者:hangge | 2022-05-07 08:50
七、集合(Set)
1,集合定义
(1)集合与列表很像,不同的是集合内部的元素是无序的并且不可重复。创建集合的时候有 2 种方式,一种是直接使用集合的特征符号‘{}’来创建,一种是使用 set() 函数强制类型转换来创建:
注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。
set1 = {"a", "b", "c"} set2 = set() set3 = set(["a", "b", "c"]) set4 = set(("a", "b", "c")) set5 = set(range(0, 5)) print(set1) print(set2) print(set3) print(set4) print(set5)
(2)由于集合内的元素是无序并且不可重复的,因此我们可以使用集合来进行去重:
set = {"a", "b", "b", "b", 1 , 1, 2} print(set)
2,判断是否包含某元素
使用 in 和 not in 可以判断某元素是否存在:
set = {"a", "b", "c" , 1, 2} if "a" in set: print("a is in set") if "d" not in set: print("d is not in set")
3,遍历集合
集合不支持索引,因为集合内元素是无序的,我们可以使用 for 循环来遍历:
set = {"a", "b", "c" , 1, 2} for i in set: print(i)
4,添加删除元素
集合提供了一些方法让我们可以对元素进行增删改操作:
set = {"a", "b", "c" , 1, 2} print(set) print("--- 插入元素 ---") set.add("d") set.add("a") print(set) print("--- 删除元素 ---") set.remove("a") print(set) print("--- 连接两个集合 ---") set.update(["X", "Y"]) print(set) print("--- 清空内部元素 ---") set.clear() print(set)
5,集合运算
(2)我们可以使用一些运算符计算两个集合的交集、并集、差集、异或集等。在对集合做运算时,不会影响原来的集合,而是返回一个运算结果。
print("--- 创建两个集合 ---") set1 = {1,2,3,4} set2 = {3,4,5,6} print(set1) print(set2) print("--- & 交集运算 ---") print(set1 & set2) # {3, 4} print("--- | 并集运算 ---") print(set1 | set2) # {1, 2, 3, 4, 5, 6} print("--- | 差集 ---") print(set1 - set2) # {1, 2} print("--- ^ 异或集(两个集合中特有的元素) ---") print(set1 ^ set2) # {1, 2, 5, 6}
(2)也可以检查一个集合是否是另一个集合的超集或者子集:
子集、超集:如果 a 集合中的元素全部都在 b 集合中出现,那么 a 集合就是 b 集合的子集,b 集合是 a 集合超集
真子集、真超集:如果超集 b 中含有子集 a 中所有元素,并且 b 中还有 a 中没有的元素,则 b 就是 a 的真超集,a 是 b 的真子集
真子集、真超集:如果超集 b 中含有子集 a 中所有元素,并且 b 中还有 a 中没有的元素,则 b 就是 a 的真超集,a 是 b 的真子集
print("--- 真子集判断 ---") print({1, 2, 3} < {1, 2, 3}) # False print({1, 2, 3} < {1, 2, 3, 4}) # True print("--- 子集判断 ---") print({1, 2, 3} <= {1, 2, 3}) # True print({1, 2, 3} <= {1, 2, 3, 4}) # True print("--- 真超集判断 ---") print({1, 2, 3} > {1, 2, 3}) # False print({1, 2, 3, 4} > {1, 2, 3}) # True print("--- 超集判断 ---") print({1, 2, 3} >= {1, 2, 3}) # True print({1, 2, 3, 4} >= {1, 2, 3}) # True
八、字典(dict)
1,字典定义
(1)字典是一种映射类型,字典用 { } 标识,它是一个无序的“键(key):值(value)”的集合。
注意:字典中的值(value)可以是任意数据类型,但是键(key)必须是不可变的类型,例如整数、字符串、元组都可以作为字典的键(key)。
dict1 = {} #空字典 dict2 = {'name':'Tom','age':20, 2: True} #带有三个元素的字典
(2)也可以使用构造函数 dict() 直接从键值对序列中构建字典:
dict1 = dict([('hangge', 1), ('Google', 2), ('Taobao', 3)]) dict2 = dict(hangge=1, Google=2, Taobao=3) print(dict1) print(dict2)
2,判断是否包含某个键
使用 in 和 not in 可以判断字典中某个键是否存在:
dict = {"hangge": 1, "google": 2, "taobao": 3} if "hangge" in dict: print("hangge is in dict") if "baidu" not in set: print("baidu is not in dict")
3,获取键值
下面是获取字典里面键值的一些方法:
dict = {"hangge": 1, "google": 2, "taobao": 3} print(dict) print("--- 通过键获取值 ---") print(dict["hangge"]) # 没找到会报错 print(dict.get("baidu", "没找到")) #没找到返回指定值 print("--- 获取所有键 ---") print(dict.keys()) print("--- 获取所有值 ---") print(dict.values()) print("--- 获取可迭代的(键, 值) 元组列表 ---") print(dict.items())
4,遍历字典
(1)遍历字典中所有的键:
dict = {"hangge": 1, "google": 2, "taobao": 3} for key in dict: print(key) for key in dict.keys(): print(key)
(2)遍历字典中所有的值:
dict = {"hangge": 1, "google": 2, "taobao": 3} for value in dict.values(): print(value)
(3)遍历字典中的所有键和值:
dict = {"hangge": 1, "google": 2, "taobao": 3} for key, value in dict.items(): print(key, value)
5,添加修改删除元素
下面是一些对字典元素进行增删改操作的样例:
dict = {"hangge": 1, "google": 2, "taobao": 3} print(dict) print("--- 根据key设置值(没有则新增,有则更新) ---") dict["hangge"] = 0 dict["baidu"] = 4 print(dict) print("--- 根据key设置值(没有则新增,有则不更新) ---") dict.setdefault("google", 5) dict.setdefault("qq", 5) print(dict) print("--- 批量更新字典中的键值 ---") dict.update({"hangge": 100, "163": 10}) print(dict) print("--- 根据key删除指定元素 ---") del dict["hangge"] #当删除不存在的key时,会报异常 KeyError dict.pop("baidu") #当删除不存在的key时,会返回None,否则会返回被删除的值 print(dict) print("--- 删除最后一个元素 ---") dict.popitem() #删除最后一个元素,并将该键值对以元组的形式返回 print(dict) print("--- 清空字典 ---") dict.clear() print(dict)
6,获取字典大小
通过 len() 方法可以获取字典的元素个数,即键的个数:
dict = {"hangge": 1, "google": 2, "taobao": 3} print(len(dict))
全部评论(0)