Python中集合和字典的区别

2025年9月3日 | 阅读 5 分钟

在 Python 中,集合(set)和字典(dictionary)是内置的数据结构。集合是无序且不重复的元素集合。另一方面,字典是无序且有索引的数据集合,以“键值对”的形式存储数据。

尽管这两种结构都用于存储数据集合并具有一些相似之处,但它们在结构、行为和应用方面存在显著差异。

Python中的集合(Set)是什么?

在 Python 中,集合是用于存储集合的四种内置数据类型之一,另外三种是列表(list)、元组(tuple)和字典(dictionary)。它是一个无序的、不重复的元素集合。集合被认为是可变的,这意味着我们可以在集合创建后添加或删除元素。

集合使用花括号 {} 表示,集合中的元素用逗号分隔。通常,set() 函数用于创建空集合,而 {} 用于创建空字典。

集合的特点

以下是 Python 集合的一些主要优点

  • 无序:集合中的元素没有特定的顺序。
  • 可变:创建集合后可以添加或删除元素(例如,使用 add()remove()discard())。
  • 无重复:集合包含唯一元素;重复项将被忽略(如果存在)。

让我们通过一个例子来看看如何在 Python 中创建集合。

Difference between Set and Dictionary in Python

让我们通过一个例子来看看如何在 Python 中创建集合。

示例

立即执行

输出

{'TpointTech', (1, 2, 3), 14}
{'n', 't', 'i', 'T', 'o', 'c', 'p', 'e', 'h'}

Python中的字典(Dictionary)是什么?

字典是 Python 中用于以“键:值”对形式存储数据的内置数据类型。字典是无序的(从 Python 3.7 开始,它们保留插入顺序)、可变的、有索引的集合,其中每个键都是唯一的,并映射到一个值。它通常用于存储相关数据,例如与特定实体或对象相关的信息,可以根据键轻松检索值。

我们通常使用字典来存储相关数据,例如与特定对象或实体相关的信息,并可以根据其键轻松检索。

Dictionary 的特征

Python 字典具有多种功能,如下所示:

Difference between Set and Dictionary in Python
  • 无序:字典不遵循特定的顺序来存储项目。但是,从 Python 3.7+ 开始,在将键值对插入字典时会保留顺序
  • 可变:创建字典后,可以添加、删除或更改键值对。
  • 唯一键:字典的键必须是不同的(唯一的)。如果您尝试使用现有键插入新值,则该键 present 的值将被替换。
  • 基于键的访问:元素通过其键访问,而不是通过其索引。此功能有助于根据键查找项。

让我们通过一个例子来看看如何在 Python 中创建字典。

让我们通过一个例子来看看如何在 Python 中创建字典。

示例

立即执行

输出

Employee Data: {'full_name': 'Irfan Khan', 'employee_id': 1023, 'department': 'IT'}
Data Type: <class 'dict'>

集合和字典之间的主要区别

以下是 Python 中集合和字典之间的主要区别:

特性Set字典
定义集合是唯一元素的无序集合。字典是键值对的有序集合。
表示花括号 {}花括号 {},但带有键值对。
有序不能是(自 Python 3.7 起)
重复项不允许(仅存储唯一元素)不允许(键必须是唯一的;值可以重复)
哈希可哈希(如果集合中的所有元素都可哈希)不能直接哈希(但在较新版本的 Python 中,其 keys() 和 items() 视图在某些操作中可以像集合一样工作)
可变是(可以添加或删除元素)是(可以添加、删除键值对或修改值)
用例存储唯一项、成员资格测试、集合代数运算和删除重复项。将键映射到值、通过键进行高效查找以及表示结构化或标记化数据。

Python 中集合和字典的区别常见问题解答

1. 集合和字典的主要区别是什么?

集合是一种用于存储唯一值的数据结构,而像字典这样的数据结构允许我们以键:值对的形式存储数据。

2. 集合可以转换为字典,反之亦然吗?

是的,集合和字典之间的转换是可能的。但是,这两种数据结构的目的不同,因此我们应该谨慎进行转换。

集合转字典:我们可以通过使用 dict.fromkeys() 为每个元素分配默认值来将集合转换为字典。

示例

输出

{'a': 0, 'b': 0, 'c': 0}

字典转集合:我们可以通过提取键或值来将字典转换为集合。

示例

输出

{'x', 'y'}
{1, 2}

3. 集合和字典中可以存储哪些数据类型?

集合:集合元素必须是可哈希的,这意味着它们必须是不可变类型,例如 int、str、float 和 tuple(仅包含不可变项)。列表、字典或其他集合等可变类型不允许作为集合元素,否则将引发 TypeError。

字典:字典中的键也必须是可哈希的;与集合元素相同的规则适用。但是,值可以是任何数据类型,包括列表、字典和集合等可变对象。这使得字典在存储结构化或嵌套数据方面更加灵活,而集合虽然更有限,但针对唯一性和快速成员资格测试进行了优化。

4. 集合或字典适合存储有序数据吗?

Python 集合是无序集合,这意味着集合中的插入顺序不会被保留。因此,集合不适合存储有序数据。

另一方面,从 Python 3.7 版本开始,字典会保留插入顺序。这确保了对象将以它们添加的顺序保留,从而使其适合存储有序数据。

5. 集合和字典如何在创建或更新期间处理重复数据?

集合:集合在创建时以及向现有集合添加元素时会自动忽略重复值。

让我们看一个下面的例子

示例

输出

Set with duplicates removed: {10, 20, 30}

字典:字典不允许重复键。如果多次定义相同的键,则最后分配的值将覆盖之前的值,如下面的示例所示:

示例

输出

{'name': 'John', 'age': 25, 'profession': 'SDE I'}

下一个主题Python-data-structures