Python字典和集合操作指南:创建、获取值、修改和删除键值对,复制和遍历方法全解析

本文涉及的产品
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
云解析DNS,个人版 1个月
简介: Python字典和集合操作指南:创建、获取值、修改和删除键值对,复制和遍历方法全解析

字典(dict)


字典是一种新的数据结构,被称为映射(mapping)。它类似于列表,都用于存储对象。然而,相比列表,字典在查询数据时性能更佳。这是因为在字典中,每个元素都有一个唯一的名字,通过这个名字可以快速查找到指定的元素。


字典由多个键值对(key-value)构成,其中每个键值对都有一个唯一的键和对应的值。通过键可以快速查询到对应的值。创建字典的方式是使用大括号 {},并提供键值对。键可以是任意不可变对象(例如 int、str、bool、tuple 等),但通常我们使用字符串作为键。


创建字典


使用{}来创建字典,语法:{k1:v1,k2:v2,k3:v3}。

# 使用{}
d = {'name':'孙悟空', 'age':18, 'gender':'男'}

也可以使用dict()函数来创建字典,每一个参数都是一个键值对,参数名就是键,参数值就是值(这种方式创建的字典,key都是字符串)。

# 使用dict()函数来创建字典
d = dict(name='孙悟空', age=18, gender='男')

还可以将一个包含双值子序列的序列转换为字典,双值序列指的是序列中只有两个值,如[1,2]('a',3)'ab'等。子序列指的是序列中的元素也是序列的情况,比如[(1,2),(3,5)]

d = dict([('name', '孙悟饭'), ('age', 18)])

获取字典中的值


可以使用键来获取字典中的值,语法为:d[key]。如果键不存在,会抛出异常KeyError

print(d['age'])

可以使用get(key[, default])方法来根据键获取字典中的值。如果键在字典中不存在,则会返回None,也可以指定一个默认值作为第二个参数,当获取不到值时返回默认值。

print(d.get('name'))
print(d.get('hello', '默认值'))

修改字典


可以使用d[key] = value来修改字典中的键值对。如果键存在,则会覆盖其对应的值;如果键不存在,则会添加新的键值对。

d['name'] = 'sunwukong'  # 修改字典的key-value
d['address'] = '花果山'  # 向字典中添加key-value

另外,还可以使用setdefault(key[, default])方法向字典中添加键值对。如果键已经存在于字典中,则返回键对应的值,不会对字典做任何操作;如果键不存在,则向字典中添加该键,并设置对应的值

result = d.setdefault('name', '猪八戒')
result = d.setdefault('hello', '猪八戒')

还可以使用update([other])方法将其他字典中的键值对添加到当前字典中。如果有重复的键,则后面的键值对会替换当前的。

d = {'a': 1, 'b': 2, 'c': 3}
d2 = {'d': 4, 'e': 5, 'f': 6, 'a': 7}
d.update(d2)

删除字典中的键值对


可以使用del关键字删除字典中的键值对。

del d['a']
del d['b']

还可以使用popitem()方法随机删除字典中的一个键值对,一般会删除最后一个键值对。删除后,该方法会将删除的键值对作为返回值返回,返回值是一个元组,包含两个元素,第一个元素是被删除的键,第二个元素是被删除的值。

result = d.popitem()

另外,还可以使用pop(key[, default])方法根据键删除字典中的键值对。该方法会返回被删除的值。如果删除不存在的键,会抛出异常。如果指定了默认值,并且删除的键不存在,则不会报错,而是直接返回默认值

result = d.pop('d')
result = d.pop('z', '这是默认值')

此外,可以使用clear()方法来清空字典中的键值对。

d.clear()

复制字典


可以使用copy()方法对字典进行浅复制。复制后的对象和原对象是独立的,修改一个不会影响另一个。需要注意的是,浅复制只会复制对象内部的值,对于值也是可变对象的情况,它们不会被复制。

d = {'a': 1, 'b': 2, 'c': 3}
d2 = d.copy()
d = {'a': {'name': '孙悟空', 'age': 18}, 'b': 2, 'c': 3}
d2 = d.copy()
d2['a']['name'] = '猪八戒'
print('d =', d, id(d))
print('d2 =', d2, id(d2))

字典推导式


与列表推导式类似,Python 还支持使用字典推导式创建字典。

# 创建一个包含数字的字典
d = {i: i**2 for i in range(5)}
print(d)  # 输出:{0: 0, 1: 1, 2: 4, 3: 9, 4: 16}

遍历字典


遍历字典是指依次访问字典中的每一个键值对。在Python中,有几种方法可以实现字典的遍历操作。


使用keys()方法


keys()方法会返回字典的所有键。我们可以通过遍历键来获取字典中的每个键值对。


示例代码:

d = {'name':'孙悟空','age':18,'gender':'男'}
for k in d.keys():
    print(k, d[k])

使用keys()方法可以获取字典中的所有键,然后通过遍历键来获取每个键值对的值。


使用values()方法


values()方法会返回字典的所有值。我们可以通过遍历值来获取字典中的每个键值对。


示例代码:

d = {'name':'孙悟空','age':18,'gender':'男'}
for v in d.values():
    print(v)

使用values()方法可以获取字典中的所有值,然后通过遍历值来访问每个键值对的值。


使用items()方法


items()方法会返回字典中的所有项,每一项是一个包含键和值的双值子序列。


示例代码:

d = {'name':'孙悟空','age':18,'gender':'男'}
for k, v in d.items():
    print(k, '=', v)

使用items()方法可以获取字典中的所有项,然后通过遍历项来获取每个键值对的键和值。


小结


字典是一种非常灵活的数据结构,可以用于存储各种类型的数据。通过键值对的方式,我们可以快速地查找、添加、修改和删除元素。此外,字典还支持字典推导式等高级用法,可以帮助我们更加方便地操作数据,同时你可以根据具体需求选择合适的方法进行遍历字典。


集合(set)


集合和列表非常相似,不同点如下:


  1.集合中只能存储不可变对象


  2.集合中存储的对象是无序的,不按元素的插入顺序保存


  3.集合中不能存在重复的元素


创建集合


可以使用{}来创建集合:

s = {10, 3, 5, 1, 2, 1, 2, 3, 1, 1, 1, 1}  # <class 'set'>

注意,集合中不能包含可变对象,例如列表:

# s = {[1, 2, 3], [4, 6, 7]}  # TypeError: unhashable type: 'list'

可以使用set()函数来创建集合:

s = set()  # 空集合

还可以通过set()将序列和字典转换为集合:

s = set([1, 2, 3, 4, 5, 1, 1, 2, 3, 4, 5])
s = set('hello')
s = set({'a': 1, 'b': 2, 'c': 3})  # 只包含字典中的键

集合操作


可以使用以下操作来处理集合:


 ▪使用innot in来检查集合中的元素是否存在


 ▪使用len()来获取集合中元素的数量


 ▪使用add()向集合中添加元素


 ▪使用update()将一个集合中的元素添加到当前集合中


 ▪使用pop()随机删除并返回一个集合中的元素


 ▪使用remove()删除集合中的指定元素


 ▪使用clear()清空集合


 ▪使用copy()进行浅复制


示例代码:

s = {'a', 'b', 1, 2, 3, 1}
print('c' in s)  # False
print(len(s))
s.add(10)
s.add(30)
s2 = set('hello')
s.update(s2)
s.update((10, 20, 30, 40, 50))
s.update({10: 'ab', 20: 'bc', 100: 'cd', 1000: 'ef'})
result = s.pop()
s.remove(100)
s.remove(1000)
s.clear()
print(result)
print(s, type(s))

集合运算


在对集合进行运算时,不会影响原来的集合,而是返回一个运算结果。


示例代码:

s = {1, 2, 3, 4, 5}
s2 = {3, 4, 5, 6, 7}
result = s & s2  # 交集运算
result = s | s2  # 并集运算
result = s - s2  # 差集
result = s ^ s2  # 异或集
a = {1, 2, 3}
b = {1, 2, 3, 4, 5}
result = a <= b  # 检查一个集合是否是另一个集合的子集
result = {1, 2, 3} <= {1, 2, 3}  # True
result = {1, 2, 3, 4, 5} <= {1, 2, 3}  # False
result = {1, 2, 3} < {1, 2, 3}  # 检查一个集合是否是另一个集合的真子集
result = {1, 2, 3} < {1, 2, 3, 4, 5}  # True
result = a >= b  # 检查一个集合是否是另一个的超集
result = a > b  # 检查一个集合是否是另一个的真超集
print('result =', result)

以上是关于集合的一些基本操作和运算,总结如下。


小结


当使用集合时,需要注意以下几点:


 1.集合是一种无序且元素唯一的数据结构。


 2.可以使用{}set()函数创建集合。


 3.集合中只能存储不可变的对象,不能包含可变对象。


 4.可以使用innot in来检查集合中的元素是否存在。


 5.使用len()获取集合中元素的数量。


 6.使用add()向集合中添加元素,使用update()将一个集合中的元素添加到当前集合中。


 7.使用pop()随机删除并返回一个集合中的元素,使用remove()删除集合中的指定元素,使  用clear()清空集合。

 

 8.使用copy()进行浅复制。


 9.集合可以进行交集运算(&)、并集运算(|)、差集运算(-)和异或集运算(^)。


 10.可以使用<=<>=>来比较两个集合的关系,如子集、超集和真子集等。


总结起来,集合是一种非常有用的数据结构,适用于需要存储一组元素并进行快速元素查找和去重的场景。

相关文章
|
4天前
|
数据采集 存储 API
Python虚拟环境数据共享技术解析:最佳实践与常见误区
本文探讨了Python爬虫开发中如何在虚拟环境中管理数据,提倡使用共享目录、数据库和API进行数据共享。通过创建虚拟环境、安装依赖并提供一个使用代理IP爬取微博数据的示例,阐述了如何配置代理、解析网页及保存数据到共享路径。强调了避免硬编码路径、忽视依赖管理和数据安全性的误区。
28 11
Python虚拟环境数据共享技术解析:最佳实践与常见误区
|
4天前
|
算法 Python
Python图论探索:从理论到实践,DFS与BFS遍历技巧让你秒变技术大牛
【7月更文挑战第11天】图论核心在于DFS与BFS。DFS深入探索,适用于找解空间;BFS逐层扩展,擅寻最短路径。
17 8
|
4天前
|
存储 算法 Python
Python图论实战:从零基础到精通DFS与BFS遍历,轻松玩转复杂网络结构
【7月更文挑战第11天】图论在数据科学中扮演关键角色,用于解决复杂网络问题。Python因其易用性和库支持成为实现图算法的首选。本文通过问答形式介绍DFS和BFS,图是节点和边的数据结构,遍历用于搜索和分析。Python中图可表示为邻接表,DFS用递归遍历,BFS借助队列。DFS适用于深度探索,BFS则用于最短路径。提供的代码示例帮助理解如何在Python中应用这两种遍历算法。开始探索图论,解锁更多技术可能!
20 6
|
3天前
|
算法 Python
Python 大神修炼手册:图的深度优先&广度优先遍历,深入骨髓的解析
【7月更文挑战第12天】Python进阶必学:DFS和BFS图遍历算法。理解图概念,用邻接表建无向图,实现DFS和BFS。DFS适用于查找路径,BFS解决最短路径。通过实例代码加深理解,提升编程技能。
15 4
|
4天前
|
Python
不容错过!Python中图的精妙表示与高效遍历策略,提升你的编程艺术感
【7月更文挑战第11天】在Python编程中,图以邻接表或邻接矩阵表示,前者节省空间,后者利于查询连接。通过字典实现邻接表,二维列表构建邻接矩阵。图的遍历包括深度优先搜索(DFS)和广度优先搜索(BFS)。DFS使用递归,BFS借助队列。这些基础技巧对于解决复杂数据关系问题,如社交网络分析或迷宫求解,至关重要,能提升编程艺术。
11 5
|
3天前
|
算法 定位技术 Python
震惊!Python 图结构竟然可以这样玩?DFS&BFS 遍历技巧大公开
【7月更文挑战第12天】在Python中,图数据结构通过邻接表实现,如`Graph`类所示。深度优先搜索(DFS)和广度优先搜索(BFS)是图遍历的关键算法。DFS递归遍历从起点开始的分支,常用于路径查找和连通性检查;BFS使用队列,适用于找最短路径。
8 3
|
2天前
|
存储 算法 Python
“解锁Python高级数据结构新姿势:图的表示与遍历,让你的算法思维跃升新高度
【7月更文挑战第13天】Python中的图数据结构用于表示复杂关系,通过节点和边连接。常见的表示方法是邻接矩阵(适合稠密图)和邻接表(适合稀疏图)。图遍历包括DFS(深度优先搜索)和BFS(广度优先搜索):DFS深入探索分支,BFS逐层访问邻居。掌握这些技巧对优化算法和解决实际问题至关重要。**
9 1
|
4天前
|
算法 Python
深度挖掘Python图结构:DFS与BFS遍历的艺术,让复杂问题迎刃而解
【7月更文挑战第11天】在数据结构与算法中,图的遍历如DFS和BFS是解决复杂问题的关键。DFS深入探索直至无路可走,回溯找其他路径,适合找任意解;BFS则逐层扩展,常用于找最短路径。在迷宫问题中,BFS确保找到最短路径,DFS则可能不是最短。Python实现展示了两种方法如何在图(迷宫)中寻找从起点到终点的路径。
|
5天前
|
算法 Python
深度剖析!Python中图的DFS与BFS遍历,让你的数据搜索快到飞起
【7月更文挑战第10天】在数据结构和算法中,图遍历是核心概念,Python支持DFS和BFS来探索图。DFS递归深入节点,利用栈,先访问深处;BFS使用队列,层次遍历,先访问最近节点。
18 1
|
1天前
|
存储 SQL Python
`urllib.parse`模块是Python标准库`urllib`中的一个子模块,它提供了处理URL(统一资源定位符)的实用功能。这些功能包括解析URL、组合URL、转义URL中的特殊字符等。
`urllib.parse`模块是Python标准库`urllib`中的一个子模块,它提供了处理URL(统一资源定位符)的实用功能。这些功能包括解析URL、组合URL、转义URL中的特殊字符等。
5 0

推荐镜像

更多