1、字典列举
#字典用大括号"{}"标识,在使用大括号语法创建字典时,大括号中应包含多个“键值对”,键与值之间用英文冒号":"隔开,多个键值对之间用英文逗号","隔开。
{"语文":99,"数学":99,"英语":99}
{1:"张三",2:"李四",3:"王五"}
{(0,0):0,(0,1):1,(1,0):2,(1,1):3}
2、字典的创建和删除
# 创建字典
dict1 = {"语文":99,"数学":99,"英语":99}
dict2 = {1:"张三",2:"李四",3:"王五"}
dict3 = {(0,0):0,(0,1):1,(1,0):2,(1,1):3} # 元组可以作为字典中的键,而列表不可以,因为列表是可变类型。
# 创建空字典
dict1 = {}
# 使用内置函数dict()创建字典
list1 = [["语文",99],["数学",99],["英语",99]]
dict1 = dict(list1)
print(type(dict1)) # 返回值的结果为:<class 'dict'>
list2 = [("语文",99),("数学",99),("英语",99)]
dict2 = dict(list2)
print(type(dict2)) # 返回值的结果为:<class 'dict'>
# 通过指定参数创建字典
dict3 = dict(curriculum='语文',grade=99)
print(type(dict3)) # 返回值的结果为:<class 'dict'>
# zip()函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个元组,然后返回由这些元组组成的列表,然后再通过dict()函数创建字典。
keys = ["语文","数学","英语"]
values = [99,99,99]
dict4 = dict(zip(keys,values))
print(type(dict4)) # 返回值的结果为:<class 'dict'>
print(list(zip(keys,values))) # 返回值的结果为:[('语文', 99), ('数学', 99), ('英语', 99)]
# 删除字典
dict1 = {"语文":99,"数学":99,"英语":99}
del dict1
# 清空字典中的所有元素,让字典变成一个空字典
dict1 = {"语文":99,"数学":99,"英语":99}
dict1.clear()
print(dict1) # 返回值的结果为:{}
3、字典的访问
# 字典包含多个“键值对”,字典的访问都是基于键操作的
# 类似于列表的方法来访问,如果不存在的键就会抛出异常。
dict1 = {"语文":99,"数学":98,"英语":97}
print(dict1["语文"]) # 返回值的结果为:99
print(dict1["物理"]) # 返回值的结果为:KeyError: '物理'
# 使用get()方法获取指定键的值
print(dict1.get("数学")) # 返回值的结果为:98
print(dict1.get("数学","无分数")) # 返回值的结果为:98
print(dict1.get("化学")) # 返回值的结果为:None
print(dict1.get("生物","无分数")) # 返回值的结果为:无分数
# 使用items()方法来获取”键值对“列表,使用keys()方法来获取”键“列表,使用values()方法获取”值“列表。
items = dict1.items()
print(items) # 返回值的结果为:dict_items([('语文', 99), ('数学', 98), ('英语', 97)])
keys = dict1.keys()
print(keys) # 返回值的结果为:dict_keys(['语文', '数学', '英语'])
values = dict1.values()
print(values) # 返回值的结果为:dict_values([99, 98, 97])
# 通过for循环对items()方法返回的结果进行遍历
for item in dict1.items():
print(item)
# pop()方法用于获取指定键对应的值,并删除键值对。
print(dict1.pop("英语")) # 返回值的结果为:97
print(dict1) # 返回值的结果为:{'语文': 99, '数学': 98}
4、字典中添加、修改和删除元素
# 字典是可变序列,因此,可以对字典进行元素的添加、修改和删除操作。
# 添加元素
dict1 = {"语文":99,"数学":98,"英语":97}
dict1["物理"] = 96
print(dict1) # 返回值的结果为:{'语文': 99, '数学': 98, '英语': 97, '物理': 96}
# 修改元素
dict1 = {"语文":99,"数学":98,"英语":97}
dict1["数学"] = 88
print(dict1) # 返回值的结果为:{'语文': 99, '数学': 88, '英语': 97}
# 删除元素
dict1 = {"语文":99,"数学":98,"英语":97}
del dict1["英语"]
print(dict1) # 返回值的结果为:{'语文': 99, '数学': 98}
# 也可以通过update来更新已有的字典,在更新的过程中,如果字典中已有的键值对的值会被覆盖,没有的键值对会被添加。
dict1 = {"语文":99,"数学":98,"英语":97}
dict1.update( {"语文":88,"数学":87,"英语":86,"物理":85})
print(dict1) # 返回值的结果为:{'语文': 88, '数学': 87, '英语': 86, '物理': 85}
5、字典推导式
# 字典推导式可以通过字典推导式快速生成字典,字典推导式语法格式如下:
# {表达式 for 迭代变量 in 可迭代对象 [if 条件表达式]}
list1 = ['a','ab','abc']
dict1 = {key:len(key) for key in list1}
print(dict1) # 返回值的结果为:{'a': 1, 'ab': 2, 'abc': 3}
# 根据列表生成字典
list1 = ['语文','数学','英语']
list2 = [99,98,97]
dict1 = {i:j for i,j in zip(list1,list2)}
print(dict1) # 返回值的结果为:{'语文': 99, '数学': 98, '英语': 97}
# 对符合条件的键值对进行筛选
dict1 = {"语文":99,"数学":98,"英语":97}
dict2 = {i:j for i,j in dict1.items() if j>98}
print(dict2) # 返回值的结果为:{'语文': 99}
6、字典的特点
字典相当于保存了两组数据,其中一组数据是关键数据,被称为”键“(key);另一组数据可通过键来访问,被称为”值“(value)。字典具有以下特点:
1、字典的元素是“键值对”,由于字典中的键是非常关键的数据,而且程序需要通过键来访问值,因此字典中的键不允许重复,必须是唯一值,而且键必须不可变。
2、字典不支持索引和切片,可以通过“键”查询“值”。
3、字典是无序的对象集合,列表是有序的对象集合,两者之间的区别在于,字典当中的元素试通过键来存取的,而不是通过偏移量存取。
4、字典是可变的,并且可以任意嵌套。