Python字典与集合详解:定义、操作与遍历实战

Hazel
Hazel
发布时间:2026-10-16| 3人浏览过
原创

本文深入解析Python中字典和集合的核心概念与使用方法。详细讲解字典的定义、键值对特性及clear、get、pop等常用方法,涵盖元素的添加、修改与删除操作。同时介绍集合的无序可变特性,演示add、update、discard等元素管理方法,并对比union、intersection等集合运算符号与函数的区别,帮助开发者掌握高效的数据处理技巧。

字典简介

在Python中,字典和集合是两个概念紧密相关且外观相似的数据结构。字典类型具有极高的灵活性,在实际项目开发中应用广泛,后续的课程中也会频繁用到。

本文将围绕字典的基础知识,系统梳理字典类型数据的相关知识点。

首先来看字典的定义方式。

字典是一种可变且无序(注:Python最新版本中已实现有序)的集合类型。它作为存储各种数据类型的容器,以键值对为基本元素,使用大括号({})界定范围,元素间以逗号(,)分隔。

理解字典的关键在于【键值对】,即每个元素均由键和值组成。需牢记Key(键)和Value(值)这两个概念,二者通过冒号(:)分隔。例如元素(name:'橡皮擦'),其中name为键,字符串橡皮擦为值。这体现了字典的一对一映射关系。

字典的声明

可以通过使用空的大括号直接创建一个空字典。

my_dict= {}
print(my_dict)

定义仅包含一个元素的字典。

my_dict= {'name':'橡皮擦'}
print(my_dict)

定义包含多个元素的字典。

my_dict= {'name':'橡皮擦','age':19}
print(my_dict)

在设置字典时,对键有特定要求:键必须唯一。若出现重复键,系统仅保留最后一个键值对,如以下代码所示。

my_dict= {'name':'橡皮擦','name':'擦哥','age':19}
print(my_dict)

键名本身无法直接修改,若需修改键名,必须先删除原有的键值对,再添加新的键值对。

字典的基本方法

作为Python中的普通对象,字典提供了一系列基本操作方法,具体如下。

  • clear():用于清空字典;
  • get():通过指定键或对应值获取数据,若键不存在则返回None;
  • keys():用于获取所有键;
  • values():用于获取字典中所有的值;
  • items():以元组格式返回字典中的所有元素;
  • fromkeys():利用给定的键构建新字典,每个键对应的值默认为None,可用于初始化字典;
  • pop():删除指定键,并返回该键对应的值;
  • popitem():随机返回一个元素并将其从字典中删除;
  • setdefault():设置键值对,若字典中键不存在则新增,若存在则返回对应的值;
  • update():利用一个字典来更新另一个字典;

字典元素添加

向字典中添加元素可采用以下几种形式。

第一种是直接添加,即一次性添加键值对。

my_dict= {'name':'橡皮擦'}
my_dict["age"] = 19 # 直接添加
print(my_dict)

使用上述方法添加键值对时,需注意若添加的键在原字典中已存在,则执行的是更新操作而非新增。

第二种,通过setdefault()给字典添加新键值对,代码如下:

my_dict= {'name':'橡皮擦'}
my_dict.setdefault('age',19)
print(my_dict)

当setdefault()方法添加已存在的键时,不执行添加操作,而是返回原键对应的值,请测试以下代码。

my_dict= {'name':'橡皮擦'}
my_dict.setdefault('name',19)
print(my_dict)

获取字典键对应的值

通过键获取值主要有两种形式,例如通过指定键查找对应值。

my_dict= {'name':'橡皮擦'}
ret = my_dict['name']
print(ret)

若该方法指定了一个不存在的键,会直接报错,错误信息如下所示。

---------------------------------------------------------------------------
KeyError    Traceback (most recent call last)
<ipython-input-11-3e4eeea728e6> in <module>
      1 my_dict= {'name':'橡皮擦'}
----> 2 ret = my_dict['name1']
      3 print(ret)

KeyError: 'name1'

使用get()方法也可以获取键对应的值。使用该方法时,若键不存在,不会报错,而是返回None。

my_dict= {'name':'橡皮擦'}
ret = my_dict.get('name1')
print(ret)

若不希望结果返回None,可以设置缺省返回值,即使用get()方法的第二个参数。

my_dict= {'name':'橡皮擦'}
ret = my_dict.get('name1','无该值')
print(ret)

字典元素的修改

由于字典的键不可被修改,因此只能修改值。以下两种方法均可用于修改值。第一种方法前文已介绍,即使用中括号加键进行修改,此处不再赘述。另外介绍update()方法,该方法可通过字典修改原字典。

my_dict= {'name':'橡皮擦'}
my_dict.update({'name':'大橡皮擦','age':19})
print(my_dict)

在使用update()方法时需注意,该方法还能对原字典执行新增操作,即当待添加的字典中包含原字典未包含的键时,会执行新增操作。

字典元素的删除

有一个函数和两个方法可以实现字典元素的删除。第一个函数是del(),该函数可直接删除整个字典对象,也可删除字典中的特定键值对,代码如下:

my_dict= {'name':'橡皮擦'}
my_dict.update({'name':'大橡皮擦','age':19})
del(my_dict['age'])

print(my_dict)

使用pop()方法进行删除,示例代码如下:

my_dict= {'name':'橡皮擦'}
my_dict.update({'name':'大橡皮擦','age':19})
ret = my_dict.pop('age')

print(ret)

若使用pop()方法删除不存在的值,会直接报错。为防止该现象发生,可使用pop()方法的第二个参数。

my_dict= {'name':'橡皮擦'}
my_dict.update({'name':'大橡皮擦','age':19})
ret = my_dict.pop('age1',10010)

print(ret)

使用popitem()方法会随机删除一个元素,示例代码如下:

my_dict= {'name':'橡皮擦'}
my_dict.update({'name':'大橡皮擦','age':19})
ret = my_dict.popitem()

print(ret)

字典的遍历

使用keys()、values()和items()可以对字典进行遍历,它们分别对应遍历所有键、遍历所有值、遍历所有键值。

my_dict= {'name':'橡皮擦'}
my_dict.update({'name':'大橡皮擦','age':19})
print(my_dict.keys())
print(my_dict.values())
print(my_dict.items())

输出结果如下:

dict_keys(['name', 'age'])
dict_values(['大橡皮擦', 19])
dict_items([('name', '大橡皮擦'), ('age', 19)])

集合学习

首先掌握集合的定义。集合是一个无序、可变且不重复的容器,使用大括号({})标记开始和结束,中间元素用逗号分隔。集合可容纳任意类型的数据。由于字典其实是特殊的集合,学习时可对比字典进行练习。

集合的定义。集合同样使用大括号({})定义,但不能使用空大括号,否则Python会将其识别为空字典。若希望声明空集合,需使用set()函数。

my_set= set()
print(my_set)

声明包含一个元素的集合。

my_set = {1,}
print(type(my_set))

集合添加元素

使用add()方法可以添加元素,示例代码如下所示:

my_set = set()
my_set.add('橡皮擦')
print(my_set)

使用update()可以一次增加一个元素,也可以增加多个元素。

my_set = set()
my_set.update({'橡皮擦',28})
print(my_set)

集合删除元素

使用discard()、remove()、pop()方法可以删除集合中的元素,示例代码如下。使用discard()可以删除指定元素,若元素不存在,不报错(这一点非常重要)。

my_set = set()
my_set.update({'橡皮擦',28,'石家庄','产品经理'})


my_set.discard('石家庄')

print(my_set)

使用remove()可以删除指定元素,若元素不存在,会报错(这一点非常重要)。

my_set = set()
my_set.update({'橡皮擦',28,'石家庄','产品经理'})


my_set.remove('石家庄')

print(my_set)

使用pop()可以随机删除一个元素,并返回被删除的元素。

统计集合个数,判断元素是否存在,清空集合

如题所示,该小节包含3个知识点,分别是len()、in 成员运算符、clear(),示例代码如下。

len() 函数用法

my_set = set()
my_set.update({'橡皮擦',28,'石家庄','产品经理'})

my_set.discard('石家庄')

print(len(my_set))

in 成员运算符用法

my_set = set()
my_set.update({'橡皮擦',28,'石家庄','产品经理'})

ret = '石家庄' in my_set

print(ret)

clear() 方法使用

my_set = set()
my_set.update({'橡皮擦',28,'石家庄','产品经理'})

my_set.clear()

print(my_set)

集合运算

Python语言中的集合与数学中的集合概念基本一致,因此包含交、并、差集的计算,接下来逐一说明。

求并集union()方法

A = {1,2,3}
B = {4,5,1}
ret = A.union(B)
print(ret)

还可以使用|符号。

A = {1,2,3}
B = {4,5,1}
ret = A | B
print(ret)

求交集intersection()方法,也可以使用intersection_update()方法。二者的区别是前者返回新集合,后者在原集合上进行更新。

A = {1,2,3}
B = {4,5,1}
ret = A.intersection(B)
print(ret)

对比以下代码,查看区别。

A = {1,2,3}
B = {4,5,1}
ret = A.intersection_update(B)
print(ret) # 返回None
print(A)

使用符号&也可以实现交集操作,同intersection()方法。

求差集difference()方法。求差异时需注意顺序问题,即A-B和B-A得到的结果是不同的。

A = {1,2,3}
B = {4,5,1}
ret = A.difference(B)
print(ret)

求差异也可以使用符号-实现,代码请自行编写。

到此这篇关于Python学习之字典和集合的使用详解的文章就介绍到这了,更多相关Python字典 集合内容请搜索本站以前的文章或继续浏览下面的相关文章希望大家以后多多支持本站!

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。