Python学习笔记(三) 字典
字典是 Python 中唯一的内置映射类型,由键及其相应的值组成,这种键-值对也称为项
1、创建字典
字典的特征符号是 {}
,可以使用 {}
创建字典,字典的键可以是任何不可变类型,常见的有 字符串 和 元组
>>> # 创建空字典
>>> dic = {}
>>> # 创建带有元素的字典,用 : 分隔键和值,用 , 分隔相邻项
>>> person = {'name':'Jessica', 'age':20}
也可以使用内置函数 dict()
创建字典,其参数可以是关键字实参,也可以是其他映射类型
>>> # 使用关键字实参调用函数创建字典
>>> worker = dict( name='Nancy', workerID=200189 )
>>> worker
# {'name': 'Nancy', 'workerID': 200189}
>>> # 从其他映射类型创建字典
>>> student = [('name','Tommy'),('studentID',201901)]
>>> student = dict(student)
>>> student
# {'name': 'Tommy', 'studentID': 201901}
2、索引元素
字典的索引是通过键索引值的,使用格式为 dict['KEY']
>>> dic = {'Apple':15, 'Banana':24, 'Carrot':36}
>>> dic['Banana']
# 24
也可以使用方法 get()
进行索引,一般而言,当直接访问字典中不存在的键时,会引发错误
而使用 get()
方法访问不存在的键时,并不引发异常,而是默认返回 None
>>> dic = {'Apple':15, 'Banana':24, 'Carrot':36}
>>> dic['Ant']
# KeyError
>>> dic.get('Ant')
# 返回 None
>>> dic.get('Ant','N/A') # 也可以指定当键不存在时返回的值
# 'N/A'
也可以使用方法 setdefault()
获取指定键相关联的值
但是,当字典中不包含指定键时,则在字典中添加指定的键值对,使用格式为 dict.setdefault(key,default_value)
>>> dic = {'Apple':15, 'Banana':24, 'Carrot':36}
>>> dic.setdefault('Apple',49)
# 15
>>> dic.setdefault('Ant',49)
# 49
>>> dic
# {'Apple': 15, 'Banana': 24, 'Carrot': 36, 'Ant': 49}
3、删除元素
可以使用通用函数 del()
删除元素,使用格式为 del dict[KEY]
>>> dic = {'Apple':15, 'Banana':24, 'Carrot':36}
>>> del dic['Apple']
>>> dic
# {'Banana': 24, 'Carrot': 36}
可以使用方法 pop()
删除字典指定项,返回指定键所对应的值
可以使用方法 popitem()
随机删除字典任意项,返回所删除的项
>>> dic = {'A':1 , 'B':2 , 'C':3 , 'D':4 , 'E':5}
>>> dic.pop('C')
# 3
>>> dic.popitem()
# ('E', 5)
也可以使用方法 clear()
删除所有字典项,这样的操作是就地执行的
4、添加元素
字典添加元素的方法有点特别,它可以通过直接赋值添加元素,这也是字典和序列之间一个很大的不同
>>> # 列表
>>> li = ['Apple', 'Banana', 'Carrot']
>>> li[0] = 'Ant' # 可行,列表中的第一项变成 'Ant'
>>> li[3] = 'Dog' # 不可行
# IndexError: list assignment index out of range
>>> # 字典
>>> dic = {'Apple':15, 'Banana':24, 'Carrot':36}
>>> dic['Apple'] = 30 # 可行,字典中键 'Apple' 对应的值变成 30
>>> dic['Dog'] = 40 # 可行,字典中新添加一项,键为 'Dog',对应的值为 40
另外,方法 update()
允许使用一个字典中的项更新另一个字典,如果当前字典包含键相同的项,则替换它
>>> dic1 = {'A':1 , 'B':2}
>>> dic2 = {'B':3 , 'D':4}
>>> dic1.update(dic2)
>>> dic1
# {'A': 1, 'B': 3, 'D': 4}
5、字典迭代
前置知识:
keys() 函数
:返回字典中所有键values() 函数
:返回字典中所有值items() 函数
:返回字典中所有项
所有返回值都是一种叫做 字典视图 的类型,它们始终是字典底层的反映
>>> dic = {'A':1, 'B':2, 'C':3}
>>> items = dic.items()
>>> items
# dict_items([('A', 1), ('B', 2), ('C', 3)])
>>> dic['A'] = 3
>>> items
# dict_items([('A', 3), ('B', 2), ('C', 3)])
实际演示:
>>> dic = {'A':1, 'B':2, 'C':3}
>>> # 迭代字典中的键
>>> for key in dic.keys():
print(key)
# A
# B
# C
>>> # 迭代字典中的值
>>> for value in dic.values():
print(value)
# 1
# 2
# 3
>>> # 迭代字典中的项
>>> for item in dic.items():
print(item)
# ('A', 1)
# ('B', 2)
# ('C', 3)
6、字典推导式
字典推导式与列表推导式类似,可用于快速创建字典
示例1:给出字符串列表,以字符串作为键、以字符串长度作为值建立字典
>>> li = ['I','Love','Python']
>>> dic = {i:len(i) for i in li}
>>> dic
# {'I': 1, 'Love': 4, 'Python': 6}
示例2:给出原始字典,将键和值交换位置建立新的字典
>>> old_dict = {'A':1,'B':2,'C':3}
>>> new_dict = {k:v for v,k in old_dict.items()}
>>> new_dict
{1: 'A', 2: 'B', 3: 'C'}
7、字典排序
可以使用 sorted()
函数给字典排序
- 按键排序
>>> old = {1:'E', 5:'A', 2:'D', 4:'B', 3:'C'}
>>> new = sorted(old.items(), key=lambda old:old[0])
>>> new
# [(1, 'E'), (2, 'D'), (3, 'C'), (4, 'B'), (5, 'A')]
- 按值排序
>>> old = {'A':5, 'E':1, 'B':4, 'D':2, 'C':3}
>>> new = sorted(old.items(), key=lambda old:old[1])
>>> new
# [('E', 1), ('D', 2), ('C', 3), ('B', 4), ('A', 5)]
【 阅读更多 Python 系列文章,请看 Python学习笔记 】