Python程序开发——第四章 字典与集合

简介: Python程序开发——第四章 字典与集合

一、字典


字典是一种映射类型,即键-值的形式组合,字典的键是唯一的,但值可以不唯一,值可以为任何数据类型,且字典中的元素是无序的。

键可以用字符串、数字或元组,但不能是列表,即键必须是不可变的。


(一)字典的创建


1、通过使用花括号,即{}来创建字典,其中可以包含多个键值对(键-值),键和值之间使用冒号:连接,且多个键值对使用逗号相隔。

若花括号内没有键值对,则会创建一个空字典,若字典中由重复键,则旧键会被覆盖。

x = {"a": "第一", "a": "第二"}
print(x)

可以看出字典的键已被替换为“第二”:

1667097309726.jpg

例如下列python代码:

x = {"a": "第一", "b": "第二", "c": 1, "d": 2}
y = {}
print(x, y)

运行结果如下:

1667097327967.jpg

2、另外也可以通过使用内置函数dict()函数来创建字典,其中键值对之间通过使用=连接,即键=值。

例如下列python代码:

a = dict(name="xiaoming", sex="男", age=20)
print(a)

运行结果如下:

1667097348379.jpg

若通过使用函数来创建字典中,有重复键时,会报错。


(二)字典的访问


由于字典中的键是唯一的,可以通过键来访问获取键对应的值,例如下列python代码:

a = dict(name="xiaoming", sex="男", age=20)
print(a['name'])

运行结果如下:

1667097374982.jpg

若字典中不存在所要访问的键,则会报错。


(三)字典的增删改查


1、字典的添加


通过指定新键添加字典元素或使用update()函数来添加字典元素。

例如下列python代码,在字典a中创建一个新键tel,值为1234567,然后使用update函数添加一个新的元素:

a = {"name": "xiaoming", "sex": "男", "age": 20}
print(a)
a["tel"] = 1234567
print(a)
a.update(address="Rod 1")
print(a)

运行结果如下:

1667097390932.jpg


2、字典的删除


(1)可以通过使用pop()函数,对字典中指定元素的键值进行删除。

(2)使用popitem()函数,随机删除字典中的元素。

(3)使用clear()函数,清空字典中的所有元素。

例如下列python代码,指定删除age键值对,popitem()函数随机删除的是tel键值对,最后通过clear()函数清空字典:

a = {"name": "xiaoming", "sex": "男", "age": 20, "tel": 134567}
a.pop("age")
print(a)
a.popitem()
print(a)
a.clear()
print(a)

运行结果如下:

1667097429062.jpg

(4)另外也可以通过del语句来删除字典中单个的元素或清空所有。

例如下列python代码:

a = {"name": "xiaoming", "sex": "男", "age": 20, "tel": 134567}
del a["tel"]
print(a)
del a
print(a)

运行结果如下,这里第二个print函数出现异常的原因是,del语句已经将字典a删除,所以显示字典a未被定义:

1667097448743.jpg


3、字典的修改


通过对字典中已存在的元素进行更改,它和字典的添加差不多,也是可以通过指定键或update函数来进行修改。

例如下列python代码:

a = {"name": "xiaoming", "sex": "男", "age": 20}
a["name"] = "xiaofang"
print(a)
a.update(sex="女")
print(a)

运行结果如下:

1667097476176.jpg


4、字典的查询


通过key()、values()、items()函数来返回相应的键、值、键值对,它们都会分别返回dict_keys、dict_values、dict_items相应的对象,且这些对象都是可以迭代的,所以可以通过for循环将器遍历输出。

1667097505681.jpg

(1)通过使用keys()函数来查询字典中所有的键。

例如下列代码:

a = {"name": "xiaoming", "sex": "男", "age": 20}
print(a.keys())
print("通过for循环遍历输出所有的键:")
for i in a.keys():
    print(i)

运行结果如下:

1667097497529.jpg

例如随机输入一串数字,要求通过字典来统计输入数字中各数字出现的次数,例如下列python代码:

str=input()
count = {}#创建一个空字典
for i in str:
    if i in count.keys():#通过keys()函数来查询键是否在字典中
        count[i] += 1#若字典中已有该数字,则键相应的值加1
    else:
        count[i] = 1
print(count)

运行结果如下:

1667097531590.jpg

(2)使用values()函数来查询字典中所有的值。

例如下列python代码:

a = {"name": "xiaoming", "sex": "男", "age": 20}
print(a.values())
print("通过for循环遍历输出所有的值:")
for i in a.values():
    print(i)

运行结果如下:

1667097550460.jpg

(3)使用items()函数来查询字典中的所有的键值对。

例如下列python代码:

a = {"name": "xiaoming", "sex": "男", "age": 20}
print(a.items())
print("通过for循环遍历输出所有的元素:")
for i in a.items():
    print(i)

运行结果如下:

1667097575606.jpg


二、集合


集合类型是无序的,其中元素不可重复,它与数学学科里面的集合一样。


(一)集合的分类


集合分为可变集合和不可变集合,即根据集合中的元素是否可变来区分的,不可变集合通过使用frozenset()函数来创建,该集合中的元素不可改变,这里不多做讲解。


(二)集合的创建


(1)可变集合和字典的一般创建方法一样,也通过花括号,即{}来创建一个集合,多个元素通过逗号分隔。

(2)或可以使用set()函数来创建集合,而不能使用花括号,否则会创建一个空字典。

例如下列Python代码,向集合y、z中传入一个列表、元组:

x = {1, 0, "python", "css", "c++"}
print(x)
y = set(["t", "h", "e"])  # 向集合传入一个列表
z = set(("t", "h", "e"))  # 向集合传入一个元组
print(y)
print(z)

运行结果如下:

1667097614413.jpg

通过集合中的元素唯一这一特性,所以可以通过set()来删除列表中的重复数据,例如下列python代码,通过将列表a变为集合并输出从而实现删除列表a中重复数据的功能:

a = [1, 3, 0, -3, 9, 1.2, 3, 3]
a = list(set(a))  # list()将转换的a集合转为列表
print(a)

运行结果如下:

1667097630797.jpg


(三)集合元素的添加


可以通过add()函数和update()函数对可变集合中添加集合元素,add()函数和update()函数的作用分别是添加一个元素、添加多个元素,且add()是将元素作为一个整体添加到集合中,而update()函数是将元素拆成多个元素来添加。

例如下列python代码:

a = {1, 2, 3, 4}
print(a)
a.add(5)
print(a)
b = {"one", "two"}
b.update("three", "four")
print(b)

运行结果如下:

1667097650779.jpg


(四)集合的删除


1、可以通过remove()函数、discard()函数来删除可变集合中的指定元素,其区别是discard()函数对不存在集合中的元素进行删除时不执行任何操作,而remove()函数会报错。

2、pop()函数用于删除可变集合中的随机元素。

3、也可以通过clear()函数来清空可变集合中的所有元素或del语句直接删除集合。

例如下列python代码:

a = {1, 2, 3, 4}
print(a.clear())
b = {3, 4}
del b

运行结果如下:

1667097669904.jpg


(五)集合类型操作符


在Python中,可以通过集合类型操作符对集合进行操作。

名称 符号 含义
联合 | 两方集合并集组成新集合
交集 & 两方集合交集组成新集合
差补 - 排除交集,将只属于一方的元素组成新集合
对称差分 ^ 排除两方集合的交集组成新的集合


例如下列python代码:

x = {1, 2, 3, -1}
y = {0, 2, 6}
print(x | y)
print(x & y)
print(x - y)
print(y - x)
print(x ^ y)

运行结果如下:

1667097703120.jpg


三、列表、元组、字典、集合的总结


在Python中,组合类型分为序列类型、集合类型和映射类型,序列类型即列表和元组,它们较其它两种是有序的;集合类型是无序的且元素不重复;映射类型是以键-值的形式来表示的。

以下是列表、元组、字典、集合的对比,其中字典的键是唯一的,但值可以不唯一:

1667097262174.jpg

相关文章
|
1月前
|
安全 网络安全 文件存储
思科设备巡检命令Python脚本大集合
【10月更文挑战第18天】
76 1
思科设备巡检命令Python脚本大集合
|
1月前
|
存储 缓存 API
解密 Python 集合的实现原理
解密 Python 集合的实现原理
41 11
|
1月前
|
存储 自然语言处理 数据处理
使用Python计算多个集合的交集详解
使用Python计算多个集合的交集详解
43 1
|
2月前
|
存储 JSON 索引
一文让你彻底搞懂 Python 字典是怎么实现的
一文让你彻底搞懂 Python 字典是怎么实现的
56 13
|
2月前
|
存储 API 索引
Python 的集合是怎么实现的?
Python 的集合是怎么实现的?
48 9
|
1月前
|
存储 安全 Serverless
Python学习四:流程控制语句(if-else、while、for),高级数据类型(字符串、列表、元组、字典)的操作
这篇文章主要介绍了Python中的流程控制语句(包括if-else、while、for循环)和高级数据类型(字符串、列表、元组、字典)的操作。
33 0
|
1月前
|
存储 自然语言处理 数据库
Python字典操作实现文章敏感词检索
Python字典操作实现文章敏感词检索
|
1月前
|
存储 JSON 数据处理
分析、总结Python使用列表、元组、字典的场景
分析、总结Python使用列表、元组、字典的场景
|
1月前
|
存储 Java Serverless
【Python】字典
【Python】字典
32 0
|
1月前
|
Python
Python操作:字符串--列表--元组--字典--运算符 (一)
Python操作:字符串--列表--元组--字典--运算符 (一)
下一篇
无影云桌面