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

相关推荐

  • 服务器巡检管理规范有哪些,服务器日常巡检标准流程详解

    服务器巡检管理规范的核心在于建立一套“预防为主、快速响应、数据驱动”的标准化运维体系,其最终目的是通过高频、高质量的日常检查,将潜在的系统故障扼杀在萌芽状态,从而确保业务连续性达到99.99%以上的高可用标准,这不仅是一项技术执行动作,更是企业IT治理能力的直接体现,有效的巡检机制能够降低80%以上的突发故障率……

    2026年4月11日
    7100
  • 个人网站关于我们怎么写,个人网站关于我们怎么写

    写好“关于我们”的核心在于建立信任,而非罗列简历;通过讲述真实故事、展示专业细节和明确价值主张,将冷冰冰的公司介绍转化为用户可感知的品牌温度,在2026年的互联网语境下,用户浏览个人网站或企业官网的时间被极度碎片化,大多数访客在首屏停留不超过3秒,关于我们”页面依然充斥着空洞的形容词和冗长的成立年份,转化率将断……

    服务器运维 2026年5月25日
    4800
  • 服务器带宽少了会影响域名吗?带宽不足对网站SEO有哪些影响?

    服务器带宽减少不会直接影响域名的正常解析与所有权状态,但会严重制约域名所指向的网站内容的传输速度与用户体验,域名本质上是互联网上的一个命名系统,负责将易于记忆的字符转换为IP地址,而带宽则是数据传输的通道容量,两者在技术架构上属于不同的层级,互不隶属,但通过网站服务这一应用场景紧密关联,带宽不足会导致网站打开缓……

    2026年4月8日
    9600
  • 股票流式计算公式怎么用?股票指标公式编写教程

    股票流式计算的核心在于利用时间窗口和状态存储,对实时行情数据进行低延迟的聚合与指标计算,从而实现比传统批处理更灵敏的交易信号捕捉,在传统的金融数据处理架构中,我们习惯看到T+1的报表,或者盘后生成的K线图,这种模式对于长线投资者或许足够,但对于追求毫秒级优势的量化团队来说,滞后就是亏损,流式计算(Stream……

    2026年7月8日
    12700
  • 如何查看服务器IP地址?服务器IP查询命令详解

    要快速查看服务器的IP地址,可通过操作系统的内置命令或网络管理工具实现,Linux系统使用 ip addr 或 ifconfig 命令,Windows系统使用 ipconfig 命令,云服务器则需结合控制台与元数据服务获取公网IP,Linux服务器IP查询方法终端命令(推荐)ip addr show | gre……

    2026年2月15日
    14700
  • Python怎么学?Python零基础入门教程

    Python在2026年依然是数据科学、自动化办公及后端开发的首选语言,其核心优势在于庞大的生态系统、极低的入门门槛以及强大的AI集成能力,对于初学者和资深开发者而言,掌握Python意味着掌握了通往智能时代的钥匙,为什么Python在2026年依然不可替代从语法特性看开发效率Python的设计哲学强调代码的可……

    2026年7月5日
    14710
  • r740新服务器里面都有哪些配件,怎么选配置?

    R740新服务器内部核心配件包括两颗Intel Xeon Scalable处理器、多达24条DDR4 Registered内存、前置12个3.5英寸硬盘位、PERC H730P/H740P RAID控制器、四端口1GbE网卡、冗余电源以及丰富PCIe 3.0扩展槽,是一台平衡性能与扩展性的经典双路2U机架服务器……

    2026年8月2日
    600
  • 服务器密码不记得怎么办啊,服务器密码忘记找回方法

    服务器密码不记得怎么办啊?核心结论:优先通过系统级重置或管理员权限恢复,切勿暴力破解;Linux系统推荐使用单用户模式或Live CD重置,Windows系统可通过安装介质进入命令行重置密码,全程需确保物理或远程管理权限合法可用,确认前提:你是否具备合法恢复权限?必须明确:无合法权限的密码重置属违法行为,请先确……

    2026年4月15日
    6900
  • 服务器开机黑屏怎么回事,服务器启动黑屏怎么解决

    服务器开机黑屏通常由硬件连接故障、显示输出异常或关键组件自检失败引起,排查重点在于通过指示灯状态、报警声及最小化启动法快速定位故障源,绝大多数情况下无需更换整机即可修复, 快速定位:显示器与视频线缆的物理排查处理服务器开机黑屏问题,首要步骤并非拆机,而是排除外部显示设备故障,这是最常见也是最容易被忽视的低级错误……

    2026年3月27日
    11300
  • psqlodbc python怎么用,连接失败怎么办?

    使用 psqlodbc 驱动配合 Python 的 pyodbc 库,是连接 PostgreSQL 数据库的稳定方案,尤其适合需要 ODBC 接口或跨平台兼容的场景,psqlodbc python 安装与配置:一步步搞定连接很多开发者在接触 PostgreSQL 时,首选 psycopg2,但当你需要统一数据库……

    2026年7月22日
    200

发表回复

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