跳转至

Python3 集合

概念与用途

集合是无序、不重复的可哈希对象集合,擅长成员测试、去重和数学集合运算。frozenset 是不可变集合,可作为字典键。

核心 API

add()、update() 添加元素,discard() 安全删除,remove() 在不存在时抛异常。| & - ^ 分别表示并集、交集、差集和对称差。

backend = {"Alice", "Bob", "Carol"}
security = {"Bob", "Dave"}
print("共同成员:", backend & security)
print("全部成员:", backend | security)
print("仅后端:", backend - security)

集合关系

操作 运算符/API 用途
子集 a <= b 权限是否被允许集覆盖
真子集 a < b 严格包含
不相交 isdisjoint() 快速冲突检查
对称差 a ^ b 两侧独有元素

示例:权限校验

allowed = {"read", "write", "delete"}
requested = {"read", "write"}
if requested <= allowed:
    print("权限请求有效")
print("未请求权限:", sorted(allowed - requested))
print("冲突:", requested.isdisjoint({"admin"}) is False)

对不可变权限常量可使用 frozenset,避免调用方意外修改。集合去重会丢失重复次数和原顺序;需要保序去重可利用字典键顺序。

常见错误与工程注意

  • 空集合必须写 set(),{} 创建的是字典。
  • 集合顺序不能作为稳定输出或业务顺序;需要稳定结果时先 sorted()。
  • 列表、字典等不可哈希对象不能直接作为集合元素。