Python的起步之路
No.6、字典与集合
(一)、字典
- 在Python中,字典也如现实生活中的字典一样,使用词-语义进行数据的构建,其中词对应键(key),词义对应值(value),即键与值构成某种关系,通常将两者称为键值对,这样通过键可以快速找到对应的值。
- 字典是由元素构成的,其中每个元素都是一个键值对,具体示例如下:
student={'name':'小千','id':'20190101'}
- 示例中,字典由2个元素构成,元素之间用逗号隔开,整体用大括号括起来。每个元素是一个键值对,键与值之间用冒号隔开,如’name’:‘xiaoqian’,'name’是键,'xiaoqian’是值。
字典的特征:
- 字典中的元素是以键值对的形式出现的。
- 键不能重复,而值可以重复。
- 键是不可变数据类型,而值可以是任意数据类型。
字典的创建:
dist1={}//创建空字典
dist2={'name':'小千','id':'20190101'}
items=[('name','小千'),('score','98')]//列表
dist3=dict(items)
dist4=dict(name='小千',score=98)
字典的常用操作:
- 计算元素的个数
字典中元素个数可以通过len()函数来获取
dict = {'qfendu':'千峰教育','coding':'扣丁学堂'}
运行结果:
- 访问元素值
列表与元组是通过下标索引访问元素值,而字典是通过元素的键来访问值。
dict = {'qfendu':'千峰教育','coding':'扣丁学堂'}
print(dict['qfendu'])
print(dict['coding'])
有时不确定字典中是否存在某个键而又想访问该键对应的值,则可以通过get()函数实现。
dict = {'qfendu':'千峰教育','coding':'扣丁学堂'}
name1 = dict.get('goodprogermmer')//不存在该键时,返回None,而不是报错
print(name1)
name2 = dict.get('qfendu')//存在该键时,返回对应的值
print(name1)
运行结果:
- 修改元素值
字典中除了通过键访问值外,还可以通过键修改值
std={'name':'小千','score':100}
print(std)
std['name']='小锋'
std['score']=99
print(std)
运行结果:
- 添加元素
通过键修改值时,如果键不存在,则会在字典中添加该键值对。
std={'name':'小千','score':100}
std['name']='小锋'
std['age']=18
print(std)
此外,还可以通过update()函数修改某键对应的值或添加元素:
std={'name':'小千','score':100}
new={'name':'小锋'}
std.update(new)
print(std)
add={'age':'18'}
std.update(add)
print(std)
运行结果:
- 删除元素
删除字典中的元素可以通过“del 字典名[键]”实现。
std={'name':'小千','score':100}
del.std['score']
print(std)
如果想删除字典中所有元素,则可以使用clear()实现:
std={'name':'小千','score':100}
std.clear()
print(std)
注意使用“del 字典名”可以删除字典,删除后,字典就完全不存在。
- 复制字典
有时需要将字典复制一份以便用于其他操作,这样原字典数据不受影响,这时可以通过函数copy()函数来实现:
std={'name':'小千','score':100}
s = std.copy()
del.s['score']
print(s)
print(std)
运行结果:
- 成员运算
字典中可以使用成员运算符(in、not in)来判断某键是否在字典中:
std={'name':'小千','score':100}
print('name' in std)
print('score' not in std)
运行结果:
- 设置默认键值对
有时需要为字典中某个键设置一个默认值,则可以使用setdefault()函数,如例所示。
std={'name':'小千','score':100}
name = std.setdefault('school','千锋教育')
print(name, std)
name = std.setdefault('school','扣丁学堂')
print(name, std)
- 获取字典中的所有键
keys()函数可以获取字典中所有元素的键,如例所示。
std={'name':'小千','score':100}
print(std.keys())
for key in std.keys():
print(key)
运行结果:
- 获取字典中的所有值
values()函数可以获取字典中所有元素键所对应的值,如例所示。
std={'name':'小千','score':100}
print(std.values())
for value in std.values():
print(value)
运行结果:
- 获取字典中所有的键值对
items()函数可以获取字典中所有的键值对,如例所示。
std={'name':'小千','score':100}
print(std.items())
for item in std.items():
print(item)
此外,items()函数与for循环结合可以遍历字典中的键值对,如例所示。
std={'name':'小千','score':100}
for key,value in std.items():
print('key = %s,value = %s'%(key,value))
运行结果:
- 随机删除元素
popitem()函数可以随机返回并删除一个元素,如例所示。
std={'name':'小千','score':100,'school':'千锋教育'}
item = std.popitem()
print(item,std)
此外,pop()函数可以根据指定的键删除元素,如例所示。
std={'name':'小千','score':100,'school':'千锋教育'}
item = std.pop('score')
print(item,std)
运行结果:
(二)、集合
- 集合是由一组无序排列且不重复的元素组成。
set1 = {1,2,'a'}
-
集合使用大括号表示,元素类型可以是数字类型、字符串、元组,但不可以是列表、字典,具体示例如下:
-
使用大括号创建的集合属于可变集合,即可以添加或删除元素。此外,还存在一种不可变集合,即不允许添加或删除元素。
-
接下来演示创建这两种集合的方法,如例所示。
-
集合的一个重要用途是将一些数据结构中的重复元素去除,如例所示。
运行结果如图所示。
集合的常用操作:
-
添加元素
集合中添加元素可以使用add()和update()函数,如例所示。
运行结果如图所示:
-
删除元素
集合中删除元素可以使用remove()和discard()函数
运行结果:
-
集合运算
集合可以参与多种运算
除了上述运算符外,还可以通过union()、intersection()与difference()函数实现集合的并集、交集与差集:
运行结果:
-
集合遍历
集合可以通过for循环遍历其中的元素
set1 = {1,2,3,4}
for num in set1:
print(num,end = ' ')
运行结果:
Good bye!
PS:图片素材来源于网络。