frozenset() 是 Python 内置的不可变集合类型构造函数。它与 set 类似,但一旦创建,其元素就不能被添加、删除或修改,因此可以作为字典的键或其他集合的元素。

一、函数语法

frozenset([iterable])

参数:

iterable:可选。任何可迭代对象(如列表、元组、集合、字符串等)。如果省略,则返回一个空的 frozenset。

返回值:

返回一个新的不可变集合对象 frozenset。

二、基础用法示例

1、创建空的 frozenset

fs = frozenset()print(fs)  # frozenset()

2、由列表创建

fs = frozenset([1, 2, 3, 2])print(fs)  # frozenset({1, 2, 3})  # 自动去重

3、由字符串创建

fs = frozenset("hello")print(fs)  # frozenset({'h', 'e', 'l', 'o'})

4、由集合创建

fs = frozenset({10, 20, 30})print(fs)  # frozenset({10, 20, 30})

三、frozenset 对象特点

1、不可变性

frozenset 是不可变的(immutable),创建后不能修改,因此是可哈希的(hashable)。

而 set 是可变的(mutable),支持添加、删除、修改元素。

2、自动去重

与 set 一样,不会存储重复元素。

3、无序性

与 set 一样,不保证元素顺序。

4、frozenset 可以作为字典的键或其他集合的元素,而 set 不可以。

fs = frozenset([1, 2])s = set([1, 2])
d = {fs: "ok"}  # ✅ frozenset 可作为键# d = {s: "error"}  # ❌ TypeError: unhashable type: 'set'

四、 与 set 的区别

1、set 是可变的(mutable),支持添加、删除、修改元素。

2、frozenset 是不可变的(immutable),创建后不能修改。

3、frozenset 可以作为字典的键或其他集合的元素,而 set 不可以。

fs = frozenset([1, 2])s = set([1, 2])
d = {fs: "ok"}  # ✅ frozenset 可作为键# d = {s: "error"}  # ❌ TypeError: unhashable type: 'set'

五、补充说明

1、创建 frozenset 的时间复杂度与 set 相同,取决于输入数据的长度。

2、常用于需要固定集合内容且需要集合可作为字典键的场景。

3、在多线程或需要数据安全的情况下,可以用 frozenset 替代 set,防止被意外修改。

图片

“点赞有美意,赞赏是鼓励”

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐