首页 > 编程笔记 > Python笔记

Python元组(tuple)、字典(dict)和集合(set)详解

为了便于程序处理,主流编程语言均提供了集合型数据类型,如 C# 有数组和 List,Java 有 Map、Set、List 等,PHP 有 array。Python 中的集合型数据类型主要有列表、元组、集合与字典四种。列表在上节教程已经介绍,本节教程主要介绍元组、集合和字典。

Python tuple字典

元组与列表功能相似,区别是列表中的元素可以修改,但元组中的元素不能修改。

元组使用成对的小括号定义,例如:

tuple1 = ('a', 'b', 2000, 2019)
tuple2 = (1, 2, 3, 4, 5)


当元组中只有一个元素时需要在元素后加逗号,否则定义元组的小括号会被当作运算符,例如:

tup1 = (1)
type(tup1)  #不加逗号,类型为整型
tup1 = (1,)
type(tup1)   #加上逗号,类型为元组

上述代码的运行结果如下所示:

>>> tup1 = (1)
>>> type(tup1)  #不加逗号,类型为整型
<class 'int'>
>>> tup1 = (1,)
>>> type(tup1)   #加上逗号,类型为元组
<class 'tuple'>


与列表相同,可以使用下标访问元组中的元素,例如:

tuple1 = ('a', 'b', 2000, 2019)
print(tuple1[2])

运行上述代码将得到元素 2000。

可以将多个元组连接组合成一个新的元组,例如:

tuple1 = ('a', 'b', 2000, 2019)
tuple2 = (1, 2, 3, 4)
print(tuple1 + tuple2)

上述代码的运行结果下所示:

>>> tuple1 = ('a', 'b', 2000, 2019)
>>> tuple2 = (1, 2, 3, 4)
>>> print(tuple1 + tuple2)
('a', 'b', 2000, 2019, 1, 2, 3, 4)


删除列表使用 del 语句,例如:

a = ('a', 'b', 'c')
del a

+*in等运算符对元组同样起作用,效果与列表类似;len( )、max( )、min( ) 等函数对元组的作用也与列表类似,此处均不再赘述。

Python set集合

集合是包含若干元素的列表,其特点是元素无序且无重复元素。定义集合使用成对的大括号{ }或 set( ) 函数,例如:

drawer = {'pen', 'pencil', 'ruler', 'eraser'}

注意,创建空集合必须使用 set( ) 函数。

Python 中集合的概念基本上反映了集合论对应的概念。两个不同的集合可以执行交、并、补、差等运算,例如:

drawer = {'pen', 'pencil', 'ruler', 'eraser'}
desk = {'pen', 'book ', 'cup'}
drawer | desk   #两个集合的并集
drawer & desk   #两个集合的交集
drawer ^ desk    #两个集合的交集的补集
drawer - desk    #两个集合的差集

上述代码的运行结果如下所示:

>>> drawer = {'pen', 'pencil', 'ruler', 'eraser'}
>>> desk = {'pen', 'book', 'cup'}
>>> drawer | desk    #两个集合的并集
{'book', 'pen', 'eraser', 'cup', 'ruler', 'pencil'}
>>> drawer & desk     #两个集合的交集
{'pen'}
>>> drawer ^ desk       #两个集合的交集的补集
{'ruler', 'eraser', 'pencil', 'book', 'cup'}
>>> drawer - desk          #两个集合的差集
{'ruler', 'eraser', 'pencil'}


Python 中可以用于集合的函数主要有 add( )、clear( )、copy( )、discard( )、remove( )、pop( )、difference( )、intersection( )、union( ) 等。

add( ) 方法用于为集合添加一个元素,例如:

a={'a', 'b', 'c'}
a.add('d')
print(a)

上述代码的运行结果如下所示:

>>> a={'a', 'b', 'c'}
>>> a.add('d')
>>> print(a)
{'d', 'b', 'a', 'c'}


clear( ) 方法用于清空一个集合,例如:

a={'a', 'b', 'c'}
a.clear()
print(a)

上述代码的运行结果如下所示。

>>> a={'a', 'b', 'c'}
>>> a.clear()
>>> print(a)
set()


copy( ) 方法用于复制一个集合,例如:

a={'a', 'b', 'c'}
b = a.copy()
print(b)

上述代码的运行结果如下所示:

>>> a={'a', 'b', 'c'}
>>> b = a.copy()
>>> print(b)
{'b', 'a', 'c'}


discard( ) 方法用于删除集合中一个指定元素,例如:

a={'a', 'b', 'c'}
a.discard('b')
print(a)

上述代码的运行结果如下所示:

>>> a={'a', 'b', 'c'}
>>> a.discard('b')
>>> print(a)
{'a', 'c'}

remove( ) 方法与 discard( ) 方法作用相同,区别在于 remove() 方法在移除集合中一个不存在的元素时会发生错误,而 discard( ) 方法不会。

pop() 方法用于从集合中随机移除一个元素,例如:

a={'a', 'b', 'c', 'd' 'e', 'f', 'g'}
a.pop('b')
print(a)

多次运行上述代码的结果如下所示:

>>> a={'a', 'b', 'c', 'd','e', 'f', 'g'}
>>> a.pop()
'a'
>>> print(a)
{'b', 'f', 'c', 'd', 'g', 'e'}
>>> a={'a', 'b', 'c', 'd','e', 'f', 'g'}
>>> a.pop()
'c'
>>> print(a)
{'g', 'a', 'e', 'b', 'd', 'f'}


difference( )、intersection( )、union( ) 等方法分别用于计算两个集合的差集、交集和并集,效果与“-”“&”“|”等运算符相似,此处不再赘述。

Python dict字典

字典可以存储任意类型的对象,字典中的键值对分别存储字符串型下标及对应的内容。字典中的每个键和值之间使用冒号“:”分隔,键值对之间使用逗号“,”分隔,整个字典使用成对的大括号{ }定义,例如:

dict = {'A': '123', 'B': '45', 'C': '678'}


要访问字典中的值,需要使用中括号语法,例如:

print(dict['B'])

运行上述代码将返回字符串“45”。

添加或修改字典中某个键值对中的值也是使用中括号语法,例如:

dict = {'A': '123', 'B': '45', 'C': '678'}
dict['D'] = '9'

当该键存在时修改对应的值,不存在时将该键值对添加到字典。

与列表、元组、集合相同,清空字典的内容使用 clear( ) 方法,删除字典使用 del 命令,例如:

dict = {'A': '123', 'B': '45', 'C': '678'}
dict.clear()     #清空dict的内容
del dict['A']    #删除dict字典中A键和对应的值
del dict          #删除dict字典


字典有以下两个特点:一是其中的键名不能重复,创建字典时若同一个键被多次赋值,则其值为最后一次赋值的内容;二是键一旦定义即不可更改,若要修改键名则意味着删除原键值对并新建键值对。

所有教程

优秀文章