frozenset python是什么?frozenset和set的区别

在 Python 中,frozenset 是一个不可变的集合(Set)类型。

核心特点

  1. 不可变性(Immutable):一旦创建,就不能添加、删除或修改其中的元素。
  2. 哈希able(Hashable):因为它是不可变的,frozenset 本身可以作为字典的键或另一个集合的元素(而普通的 set 不行)。
  3. 无序性:元素没有固定的顺序。
  4. 唯一性:集合中的元素必须是唯一的,不允许重复。

基本用法

创建 frozenset

# 从列表创建
fs = frozenset([1, 2, 3, 4, 5])
print(fs)  # 输出: frozenset({1, 2, 3, 4, 5})
# 从字符串创建
fs_str = frozenset("hello")
print(fs_str)  # 输出: frozenset({'h', 'e', 'l', 'o'})  # 'l' 只出现一次
# 空 frozenset
empty_fs = frozenset()
print(empty_fs)  # 输出: frozenset()

frozenset python是什么?frozenset和set的区别

第11课:Python数据类型之—集合(set)类型
加载中
第11课:Python数据类型之—集合(set)类型

常用方法

frozenset 支持许多与 set 相同的只读操作,

  • issubset() / <=:是否是子集
  • issuperset() / >=:是否是超集
  • union() / :并集
  • intersection() / &:交集
  • difference() / :差集
  • symmetric_difference() / ^:对称差集
  • copy():返回副本
a = frozenset([1, 2, 3])
b = frozenset([2, 3, 4])
# 交集
print(a & b)       # frozenset({2, 3})
# 并集
print(a | b)       # frozenset({1, 2, 3, 4})
# 差集
print(a - b)       # frozenset({1})
# 判断子集
print(a.issubset([1, 2, 3, 5]))  # True

❌ 不支持的操作

由于不可变,以下操作会抛出 AttributeError

  • add()
  • remove()
  • discard()
  • update()
  • frozenset python是什么?frozenset和set的区别

  • clear()
fs = frozenset([1, 2, 3])
fs.add(4)  # ❌ AttributeError: 'frozenset' object has no attribute 'add'

为什么使用 frozenset

✅ 主要用途:作为字典的键或集合的元素

普通 set 是可变的,因此不能作为字典的键或放入另一个集合中,而 frozenset 可以。

# 错误示例:普通 set 不能作为字典的键
# my_dict = {set([1, 2]): "value"}  # ❌ TypeError: unhashable type: 'set'
# 正确示例:frozenset 可以作为字典的键
my_dict = {
    frozenset([1, 2]): "value1",
    frozenset([3, 4]): "value2"
}
print(my_dict[frozenset([1, 2])])  # 输出: value1

✅ 用于需要不可变集合的场景

  • 缓存(memoization):当函数参数包含集合时,用 frozenset 可以缓存结果。
  • 确保数据不被意外修改。

frozenset python是什么?frozenset和set的区别


set vs frozenset 对比

特性 set frozenset
可变性 可变(Mutable) 不可变(Immutable)
哈希性 不可哈希(Unhashable) 可哈希(Hashable)
能否作为字典键 ❌ 否 ✅ 是
能否放入其他集合 ❌ 否 ✅ 是
性能 增删改快 创建后只读,查询快
适用场景 动态集合操作 需要不可变集合、作为键

  • 如果你需要一个可以修改的集合,使用 set
  • 如果你需要一个不可变的集合,或者需要将它用作字典的键其他集合的元素,使用 frozenset

首发原创文章,作者:王坚‌,如若转载,请注明出处:https://test.idctop.com/article/483656.html

(0)
Linux如何进入root权限?linux切换root用户命令
上一篇 2026年7月11日 22:35
Linux占CPU过高怎么办?如何排查占用CPU高的进程
下一篇 2026年7月11日 22:39

相关推荐

  • 服务器连接FC存储怎么接线,接线方法有哪些?

    服务器连接FC存储接线的核心,是确保HBA卡、光纤线缆、交换机端口速率和协议一致,并正确配置WWN与Zoning,否则链路无法正常通信,服务器连接FC存储接线前的准备硬件兼容性确认确认服务器HBA卡与主板PCIe插槽兼容,例如PCIe 3.0 x8插槽适用于8Gbps或16Gbps HBA卡,存储控制器和FC交……

    2026年8月5日
    1000
  • 规则引擎中消息队列怎么用?如何配置消息队列

    在规则引擎中集成消息队列,核心在于将消息队列作为解耦异步处理的中间件,通过“生产-消费”模式实现规则判定与业务逻辑的分离,从而提升系统吞吐量并保证数据不丢失,很多开发团队在构建实时风控或复杂事件处理系统时,常陷入一个误区:试图在规则引擎内部直接执行所有耗时的业务操作,这种做法会导致规则引擎线程阻塞,响应时间急剧……

    2026年7月7日
    17710
  • 服务器提升板套是什么,服务器提升板套怎么安装

    服务器提升板套作为数据中心硬件升级的关键组件,其核心价值在于以最低的改造成本实现服务器性能的跨越式增长,同时保障系统的高可用性与兼容性,在算力需求呈指数级增长的当下,通过部署专业的提升板套,企业能够有效延长服务器生命周期,解决老旧设备与新标准硬件之间的接口匹配难题,是优化TCO(总体拥有成本)的最佳技术路径,服……

    2026年3月11日
    11900
  • Python中Realm怎么使用?Python操作Realm数据库教程

    在Python中,Realm是一个基于对象数据库的实时同步引擎,它通过本地SQLite存储实现离线优先架构,让开发者无需编写复杂的SQL代码即可轻松构建跨平台数据应用,对于现代应用开发而言,数据持久化与同步是核心痛点,传统的ORM框架如SQLAlchemy虽然强大,但在处理实时协作、离线缓存和跨设备同步时往往显……

    2026年7月5日
    17000
  • 为什么服务器硬盘能热拔插?服务器硬盘热拔插的好处

    服务器硬盘支持热拔插服务器硬盘支持热拔插,是指在服务器正常运行(通电且处理业务)的状态下,无需关机或重启,即可安全地移除或安装硬盘驱动器的技术能力, 这是现代企业级服务器,特别是用于关键业务、需要高可用性和灵活性的数据中心环境中的一项核心特性, 热拔插的核心价值与工作原理核心价值:最大化业务连续性: 消除因硬盘……

    2026年2月7日
    11410
  • 个人如何申请银行网络支付接口?个人申请第三方支付接口流程

    个人通常无法直接申请银行级的网络支付接口,必须通过持有央行颁发《支付业务许可证》的第三方支付机构(如支付宝、微信支付、银联商务等)进行入驻,以“特约商户”身份间接获得收款能力,很多人误以为像申请信用卡一样,去银行柜台填个表就能拿到一个API接口,直接在自己的网站或APP里调起支付功能,这种想法在2026年的合规……

    2026年5月27日
    4300
  • 高级数据链路控制规程怎么开机?HDLC协议启动步骤

    高级数据链路控制规程(HDLC)的开机核心在于物理层链路激活与数据链路层建链协商,即设备上电后通过发送标志字段F(7E)及U帧完成链路初始化,而非传统硬件的按压启动,HDLC开机的底层逻辑与协议唤醒概念纠偏:协议开机非硬件开机在工业通信与广域网领域,HDLC作为面向比特的同步协议,其“开机”本质是逻辑链路的建立……

    2026年4月26日
    5300
  • Windows怎么通过命令查看开了哪些服务器?,查看服务器命令有哪些?

    要确认Windows系统当前开启了哪些服务器(包括后台服务与网络监听),最直接有效的命令是netstat -ano和sc query,前者展示实时的网络连接与监听端口,后者列出所有系统服务的当前状态,这两个命令分别对应两种常见的“服务器”概念:一种是监听网络请求的端口程序,另一种是Windows后台服务,无论是……

    2026年8月3日
    400
  • python turtle怎么画爱心?python turtle海龟绘图入门教程

    Python Turtle是专为初学者设计的图形化编程库,通过简单的指令即可绘制几何图形,是学习编程逻辑的最佳入门工具,很多刚接触编程的朋友,面对黑漆漆的代码界面往往感到无从下手,与其直接啃枯燥的语法书,不如让屏幕上的小海龟动起来,Python Turtle就像是一个听话的绘图员,你告诉它走几步、转几个弯,它就……

    2026年7月11日
    11700
  • 佛山网站优化公司怎么选,佛山GEO排名优化多少钱一年?

    助力企业实现精准流量与业绩增长在数字化营销时代,拥有一个网站仅仅是“在线”的开始,而如何让潜在客户在搜索引擎中精准地找到你,才是企业获取订单的关键,对于佛山众多的制造业、家居贸易及跨境电商企业而言,选择一家专业的网站优化公司,是提升品牌曝光率与转化率的核心战略,网站优化的核心服务内容专业的网站优化公司通常提供全……

    2026年7月13日
    19000

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注