Python_Day5_集合和字典
集合
- 定义:与数学上的定义完全一致
- 无序性:不支持索引运算,无法通过索引实现随机访问
- 互异性:不能有重复元素,会自动去重
- 确定性:支持成员运算,判断一个元素是否属于该集合
- 声明:例如set={1,2,3}。{ }中至少要有一个元素,即不能为空;空集合的声明为set()。集合中的元素不能为集合。
- 集合的操作:
- 成员运算(in,not in)
- 比较运算:相等性判断(==,!=);真子集(<),子集(<=或.issubset),超集(>或issuperset)
- 交并差运算
set1 = {1, 2, 3, 4, 5, 6, 7}
set2 = {2, 4, 6, 8, 10}
# 交集
# 方法一: 使用 & 运算符
print(set1 & set2) # {2, 4, 6}
# 方法二: 使用intersection方法
print(set1.intersection(set2)) # {2, 4, 6}
# 并集
# 方法一: 使用 | 运算符
print(set1 | set2) # {1, 2, 3, 4, 5, 6, 7, 8, 10}
# 方法二: 使用union方法
print(set1.union(set2)) # {1, 2, 3, 4, 5, 6, 7, 8, 10}
# 差集
# 方法一: 使用 - 运算符
print(set1 - set2) # {1, 3, 5, 7}
# 方法二: 使用difference方法
print(set1.difference(set2)) # {1, 3, 5, 7}
# 对称差
# 方法一: 使用 ^ 运算符
print(set1 ^ set2) # {1, 3, 5, 7, 8, 10}
# 方法二: 使用symmetric_difference方法
print(set1.symmetric_difference(set2)) # {1, 3, 5, 7, 8, 10}
# 方法三: 对称差相当于两个集合的并集减去交集
print((set1 | set2) - (set1 & set2)) # {1, 3, 5, 7, 8, 10}
交并差运算可以和赋值运算一起构成符合运算
set1 = {1, 3, 5, 7}
set2 = {2, 4, 6}
# 将set1和set2求并集再赋值给set1
set1 |= set2
print(set1) # {1, 2, 3, 4, 5, 6, 7}
#将set1和set3求并集再赋值给set1
set3 = {3, 6, 9}
set1 &= set3
print(set1) # {3, 6}
- 集合的方法
.add()----添加单个元素
.update({})----添加一个集合的元素
.discard()/.remove()----删除指定元素
.pop()----随机删除并返回一个元素
.clear()----清空集合
.isdisjoint()----判断有无相同元素,返回Ture或False
- 不可变集合:例如set=frozenset({1,2})。frozenset可以作为集合的元素。
字典
- 声明:例如dictionary={'a':1,'b':2,'c':3}。字典中每个元素的组成为:键(key):值(value)。⚠️字典中的键必须是不可变类型,值可以是任意类型
其他方法还有:
使用direct函数:d=dirct('a':1,'b':2,'c':3) 或 d=dirct(zip('abc','123))
使用生产式:d={x:2*x for x in range(1,5)}
- 字典的操作:
- 成员运算:字典只能查找键是否属于成员,不能查找值是否是成员
- 索引运算:dictionary[key]可输出键对应的值,也可给该键赋值
- 函数len()返回字典成员个数
- 字典的方法:
- .get(key)----获取对应键的值
- .keys()----获取所有键
- .values()----获取所有值
- .items()----获取所有键值对
- .pop()----删除并返回对应键的值
- .popitem----删除字典中最后一组键值对并返回对应的二元组
- .setdefault()----更新字典中的键对应的值或向字典中存入新的键值对
- .update()----更新字典元素,相同的键会用新值覆盖掉旧值,不同的键会添加到字典中
🛫️起飞

浙公网安备 33010602011771号