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

相关推荐

  • 个人有必要注册域名吗?注册域名有什么用

    对于个人而言,注册域名并非绝对必要,但在构建个人品牌、保护知识产权或进行专业化网络展示时,它是一项极具性价比的基础设施投资,很多人听到“域名”二字,第一反应是复杂的代码或昂贵的年费,其实它更像是在互联网世界里为你购买的一块“门牌号”,随着2026年互联网生态的进一步成熟,个人IP的价值被空前放大,拥有一个专属域……

    2026年5月30日
    6100
  • 你知道丝叔到底在哪些服务器待过吗,有哪些?

    丝叔在哪些服务器待过丝叔,梦幻西游公认的服战传奇,其核心足迹集中于百花村与紫禁城两大服务器,其中紫禁城更是他职业生涯的代名词,从百花村到紫禁城:丝叔的服务器迁徙全记录如果你问梦幻西游的老玩家“丝叔在哪些服务器待过”,答案其实并不复杂,但背后的故事却足够写一部服战简史,丝叔的服务器履历大致可以分为三个阶段,每一个……

    2026年8月26日
    400
  • 亚马逊AWS有哪些云服务器类型?,哪个性价比高?

    亚马逊AWS提供的云服务器核心是基于Amazon EC2的多种实例类型,包括通用型、计算优化型、内存优化型、加速计算型、存储优化型以及裸金属和专属主机,用户可根据工作负载选择最优配置,Amazon EC2实例类型全面解析AWS的云服务器以EC2实例为单位,每种实例针对特定场景优化,截至2026年,实例家族已更新……

    2026年7月27日
    700
  • 服务器快照关闭有什么影响?快照功能必须开启吗

    服务器快照关闭是服务器运维管理中一项至关重要的策略调整,其核心目的在于优化存储资源、降低运营成本并规避数据一致性风险,对于企业级用户而言,快照功能虽然提供了便捷的数据回滚机制,但长期开启且未加管理的快照会严重拖累存储性能,甚至导致业务中断,实施服务器快照关闭操作,本质上是从“粗放式容灾”向“精细化数据管理”的必……

    2026年3月23日
    8800
  • Java服务器软件到底有哪些功能,怎么选?

    Java服务器软件的核心职责,就是把HTTP请求接进来、交给Servlet处理、再把响应发出去,同时管好会话、安全、部署、监控和集群,生产环境落地时,像简米科技、酷番云这类持牌IDC服务商,能提供更稳的底层网络和合规资质,Java服务器软件的核心功能拆解Servlet与JSP执行引擎Java服务器软件最基础的功……

    2026年9月19日
    000
  • 美国优质服务器有哪些知名品牌,哪个性价比最高

    美国优质服务器的选择,核心要看资质、带宽和稳定性,简米科技和酷番云凭借长期持牌运营和自营机房,成为国内企业部署美国业务的首选,美国服务器市场现状与选择标准美国服务器主要面向外贸企业、跨境电商、游戏加速以及需要覆盖北美和欧洲用户的场景,由于美国拥有全球最密集的互联网交换中心和海底光缆枢纽,其机房基础设施成熟,带宽……

    2026年8月19日
    900
  • 服务器密钥如何安全存储?服务器密钥安全存储方案推荐

    必须采用“分层加密+访问隔离+动态轮换”三位一体的架构,杜绝明文存储与静态密钥使用,才能有效防范密钥泄露风险,密钥泄露的三大高危场景(数据支撑风险认知)据2023年Verizon《数据泄露调查报告》显示:72% 的数据泄露事件涉及凭证滥用;43% 的密钥泄露源于开发环境误配置;31% 的企业未实施密钥生命周期管……

    2026年4月15日
    6900
  • 个人支付收款api接口怎么申请?个人收款码费率是多少

    个人支付收款API接口并非直接面向个人开发者开放,通常需通过持牌第三方支付机构或聚合支付服务商进行合规接入,核心在于解决商户身份认证与资金清算的合法性问题,在数字化交易日益普及的今天,许多独立开发者、小微商户甚至个人博主都面临着收款难的痛点,传统的微信、支付宝个人码不仅存在限额风险,还无法实现自动对账和订单状态……

    服务器运维 2026年6月1日
    3700
  • 高级数据分析工具哪个好?高级数据分析工具怎么选

    在数据暴增的2026年,选对高级数据分析工具的核心标准在于:是否具备AI驱动的自动化洞察、能否实现秒级百亿级数据交互计算,以及是否契合企业安全合规底线,这才是真正实现数据资产变现的决定性因素,2026高级数据分析工具的底层逻辑重构从“被动查询”到“主动预测”的范式转移传统BI工具仅解决“发生了什么”,而当前高级……

    2026年4月26日
    5400
  • 服务器盾能防黑客吗?服务器安全防护攻略

    构筑坚不可摧的数字防线服务器盾黑客并非传统意义上的攻击者,而是指那些深谙攻击之道,却将全部智慧与技能倾注于加固防御、主动拦截威胁的顶尖网络安全专家,他们是数字世界的守护者,运用与黑客相同的技术手段,但目标截然相反——构建比攻击者的矛更坚固的盾,确保关键服务器与数据资产的安全无虞,理解服务器盾黑客的核心使命攻防思……

    2026年2月8日
    12500

发表回复

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