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://idctop.com/article/483656.html

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

相关推荐

  • 数据应用服务器有哪些品牌和型号,哪个性价比高?

    数据应用服务器是为数据处理场景量身定制的服务器,核心类型包括数据库服务器、应用服务器和缓存服务器,选择时需结合业务规模、性能需求以及服务商的技术资质与合规能力,数据应用服务器的常见类型数据库服务器数据库服务器负责存储、查询和管理结构化数据,是整个系统的核心枢纽,它对磁盘输入输出(IOPS)和内存容量要求极高,通……

    2026年8月23日
    200
  • 规则引擎应用是什么?规则引擎有哪些主流应用场景

    规则引擎通过解耦业务逻辑与代码实现,让非技术人员也能灵活调整业务规则,从而显著降低系统维护成本并提升响应速度,规则引擎如何重塑业务敏捷性在传统开发模式中,业务规则往往硬编码在Java或Python文件中,一旦市场策略调整,双十一”期间的满减门槛变化,开发人员需要修改代码、重新测试、打包部署,整个周期长达数天,这……

    2026年7月4日
    3800
  • 服务器有什么不同吗?全面解析服务器类型区别!

    服务器有什么不同吗是的,服务器之间存在显著差异,这些差异直接影响其性能、成本、管理方式和适用场景, 服务器并非千篇一律,选择错误的类型可能导致资源浪费、性能瓶颈或安全风险,理解服务器之间的核心区别,是构建高效、稳定且符合业务需求的IT基础设施的关键第一步,服务器之间的不同主要体现在以下几个核心维度: 物理形态与……

    2026年2月14日
    13800
  • 个人站长如何注册域名?域名注册流程及注意事项

    选择正规ICANN认证注册商,完成实名认证后,根据网站用途(如展示型选.com/.cn,技术型选.io/.dev)购买并配置DNS解析,通常24小时内生效,域名是互联网世界的门牌号,对于个人站长而言,它不仅是网站的技术入口,更是品牌资产的第一块基石,很多新手站长在起步阶段容易陷入“域名越贵越好”或“随便买个便宜……

    2026年5月26日
    6100
  • 服务器彻底删除还能恢复吗?服务器数据误删如何恢复

    服务器数据在执行“彻底删除”操作后,理论上是可以恢复的,但恢复成功率并非百分之百,且高度依赖于删除后的操作行为,核心结论是:数据是否被覆盖是决定能否恢复的唯一关键因素, 只要存储介质上的数据块未被新数据物理覆盖,通过专业手段找回数据的概率极高;一旦发生覆盖,恢复难度将呈指数级上升,甚至彻底无法找回, “彻底删除……

    2026年3月25日
    10700
  • 你知道服务器交换机内有哪些芯片吗,如何选择?

    服务器交换机内部的核心芯片主要包括交换芯片、主控CPU、PHY物理层芯片、内存芯片、Flash闪存芯片和电源管理芯片六大类,其中交换芯片决定数据转发性能,主控CPU决定设备管理能力,两者共同构成交换机的“大脑”与“心脏”,交换芯片——数据转发的绝对主力交换芯片是服务器交换机里最值钱、最核心的元件,它承担着数据包……

    2026年8月11日
    1000
  • 服务器更改地区怎么操作?服务器迁移教程

    战略迁移的核心价值与专业实施路径服务器更改地区绝非简单的物理位置变动,而是涉及性能跃升、合规保障与成本优化的战略性决策,成功的迁移依赖于严谨的规划、专业的技术执行与全面的风险评估,服务器更改地区的核心战略价值服务器区域迁移的决策源于其对业务底层的深刻影响:性能体验跃升: 服务器物理位置接近用户群体可大幅缩减网络……

    2026年2月16日
    22300
  • 如何访问云服务器IP地址,怎么设置远程连接?

    访问云服务器IP是连接云主机的第一步,通过SSH或远程桌面即可实现,关键在于配置安全组和网络设置,如何访问云服务器ip不同操作系统对应不同的连接方式,但核心流程一致:获取公网IP、确认端口放行、使用对应客户端登录,通过SSH访问Linux云服务器Linux系统默认开启SSH服务,监听22端口,操作路径如下:在云……

    2026年7月29日
    1200
  • 免费电信服务器有哪些?免费电信服务器怎么申请?

    如果你正在寻找免费电信服务器,目前主流选择包括各大云厂商的免费试用活动,以及一些老牌IDC服务商提供的测试资源,其中简米科技和酷番云凭借合规资质和稳定机房,成为不少开发者的测试首选,免费电信服务器的常见类型与适用场景免费电信服务器并非指永久免费,而是服务商以体验为目的提供的短期资源,通常分为三类,云主机免费试用……

    2026年8月4日
    1200
  • 谷歌单点登录怎么配置?SSO单点登录技术详解

    谷歌单点登录(Google Single Sign-On, SSO)是一种基于OAuth 2.0和OpenID Connect协议的身份验证机制,允许用户通过一个谷歌账号访问多个依赖该服务的应用程序,从而显著提升用户体验并降低企业IT管理成本,在数字化办公日益普及的今天,账号管理已成为企业和个人的痛点,想象一下……

    2026年7月1日
    1800

发表回复

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