字典(dictionary)
字典(dictionary)是无序的、可变的,其内容是“键值对”的形式存储的,其中键是唯一的,而值可以有多个。字典的主要特点如下:
- 字典是通过键而不是通过索引来读取的
- 字典是任意对象的无序集合,各项随机排序
- 字典是可变的,并且可以任意嵌套
- 字典中的键必须唯一
- 字典中的键必须不可变
字典的创建和删除
字典中的键和值是通过:
进行分割,每相邻两个键值对之间都是以逗号分割,将所有元素放在一个大括号{}
中,其语法格式如下:
dic = {'key_1':'value_1','key_2':'value_2',...,'key_n':'value_n'}
创建空字典:同列表和元组一样,两种语法结构如下所示:
dict_1 = {}
dict_2 = dict()
通过映射函数创建字典:内置的zip(list1,list2)
函数可以将列表或元组对应的位置元素组合为元组,并返回包含这些内容的zip对象,该zip对象可以通过list()
、tuple()
或dict()
转换为需要的类型,list1
在字典中属于键,list2
在字典中属于值,语法格式如下:
dictname = dict(zip(list1,list2))
通过给定的“键值对”创建字典:key
必须唯一且不可变,该参数可以是字符串、数字或元组;value
表示值,是任意的。示例如下:
dic = {"name":"Couioly","age":19,"address":"TianJin"}
print(dic)
Python中还可以使用dict
对象的fromkeys(lis)
方法创建键为lis
列表而值为None
的字典,语法格式如下:
lis = ["Wang","Li","Xiao","Du"]
dictname = dict.fromkeys(lis)
print(dictname)
"""输出结果为:{'Wang': None, 'Li': None, 'Xiao': None, 'Du': None}"""
删除字典:同列表或元组一样,使用del
关键字删除字典对象;若要删除字典的所有元素,则可以使用字典的clear()
方法。
'''删除字典'''
del dictname
'''清空字典'''
dictname.clear()
访问字典
若要查看字典的所有内容,则可以使用print()
函数。然而,对于字典而言,我们经常用到的是通过指定键得到相应的结果,语法如下:
print(dictname[key]) # 将会输出key对应的value
除此之外,获取字典元素Python推荐使用的方法是get()
方法,default
是可选项,用于指定的键不存在时,返回的一个默认值,若省略,则默认为None
。其语法格式如下:
# 语法: dictname.get(key[,default])
dictname = {'key1': 'value1','key2': 'value2','key3': 'value3','key4': 'value4'}
print(dictname.get('key3','未找到'))
print(dictname.get('key5','未找到'))
遍历字典
使用字典对象的items()
方法可以获取字典的“键值对”元组列表,可以通过for循环遍历该元组列表,如下示例:
dictname = {'key1': 'value1','key2': 'value2','key3': 'value3','key4': 'value4'}
for i in dictname.items():
print(i)
如果想要获取具体的每个键和值,则可以按照下述方式获取:
dictname = {'key1': 'value1','key2': 'value2','key3': 'value3','key4': 'value4'}
for key,value in dictname.items():
print(key,value)
Python中还提供了
values()
和key()
方法,用于返回字典的“值”和“键”,它们的使用方法与items()
方法相似,也需要通过for循环遍历该字典列表
添加、修改和删除字典元素
添加或修改:字典中添加和修改键值对的语法相同,都是字典名[键]=值
这种形式,语法格式如下:
dictname[key] = value
修改元素的原理:如果新添加的“键”与已存在的“键”重复,那么将使用新的“值”替换掉原来该“键”的值,这也相当于修改字典的元素。
删除字典元素:除了直接使用del
关键字进行删除之外,Python还提供了pop()
和popitem()
两种方法
dic = {'key1': 'value1','key2': 'value2','key3': 'value3','key4': 'value4'}
del dic['key3'] # del关键字删除
dic.pop('key2',0) # pop方法删除指定元素
dic.popitem() # popitem方法删除最后一个插入的键值对
维度 | pop(key,default) 方法 | popitem() 方法 |
---|---|---|
参数 | 必须指定参数,可选默认值 | 无参数 |
返回值 | 被删除键对应的value | 被删除的键值对(key,value) |
操作对象 | 指定的键 | 最后插入的键(3.7+)/随机(3.7-) |
适用场景 | 已知要删除的键 | 按顺序逐个删除元素 |
若对
pop()
方法的默认值不指定,则当字典中不存在key的键值对时将会抛出异常。
字典推导式
使用字典推导式可以快速生成一个字典,它的形式与列表推导式相似。语法格式如下:
根据键列表和值列表结合zip()
函数快速生成字典
dict_1 = {i:j for i,j in zip(key_list,value_list)}
根据旧字典按照需求生成新字典
new_dict = {i:j for i,j in old_dict.items()}
集合(set)
集合的所有元素都放在一对大括号“{}”内,两个相邻元素间使用,
间隔。Python集合分为两种:
- 可变集合
set
- 不可变集合
frozenset
创建集合
直接使用{}
创建集合,即将集合赋值给变量,以实现集合的创建。语法格式如下:
setname = {element_1,element_2,element_3,...,element_n}
在创建集合时,若输入了重复的元素,Python会自动只保留一个元素
使用set()
函数将列表、元组等其他可迭代对象转换为集合。语法格式如下:
setname = set(iteration)
# iteration 表示可迭代对象,可以是列表、元组、range对象、字符串等
创建空集合:只能使用set()
函数创建空集合,如:setname = set()
添加和删除元素
向集合中添加元素:使用add()
方法,语法如下:
setname.add(element)
"""此处的element只能使用字符串、数字以及布尔类型的True或者False,不能使用可迭代对象"""
从集合中删除元素:使用del
关键字可以删除整个集合,也可以使用集合的pop()
方法或者remove()
方法删除一个元素,还可以使用clear()
方法清空集合。
set_name = {'1','2','3','4','5','6','7'}
set_name.pop()
set_name.remove(element)
set_name.clear()
del set_name
注意区分集合的
pop()
语法和列表的pop()
语法的区别,列表的pop()
函数必须指定参数,而集合的pop()
不能指定参数。进行删除操作时注意处理异常。
文章地址 : 暑假Python基础整理 – 字典和集合