字典
字典是“键值对”的无序可变序列,字典中的每个元素都是一个“键值对”,可以通过“键对象”实现快速获取、删除、更新对应的“值对象”。
“键”是任意的不可变数据,比如:整数、浮点数、字符串、元组,不能是列表、字典、集合这些可变对象,并且键不可重复。
“值”可以是任意的数据,并且可以重复。
字典的创建
1. 可以通过{}、dict()来创建字典对象,并且字典对象可以为空。
2. 使用zip()内置函数创建。
P.S. zip()函数是Python的内置函数,将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,Python3为了节约内存,zip()返回的是zip对象,需要手动转换成列表或字典
3. 通过 fromkeys 创建值为空的字典
a = ['name', 'age', 'grade'] b = ['fanxing', 29, 60] print(dict(zip(a, b))) #{'name': 'fanxing', 'age': 29, 'grade': 60}, zip()里必须是两个列表 print(dict()) print({'name': "WangErGou", 'age': 22, 'grade': 90}) print(dict([('name', 'LiuDaLi'), ('age', 52)])) #dict()中传入以二元组为元素的列表 print(dict.fromkeys(['name', 'age', 'grade'])) #{'name': None, 'age': None, 'grade': None}
字典元素的访问
1. 通过 [键] 获得“值”。若键不存在,则抛出异常。
2. 通过 get()方法获得“值”,,优点是:指定键不存在,返回 None;也可以设定指定键不存在时默认返回的对象。推荐使用 get()获取“值对象”。
a = ['name', 'age', 'grade'] b = ['FanXing', 29, 60] c = dict(zip(a, b)) print(c.get('sex')) print(c.get('sex', "male"))
3. keys(),values(),items()返回指定集合
a = ['name', 'age', 'grade'] b = ['FanXing', 29, 60] c = dict(zip(a, b)) print(c.items()) #dict_items([('name', 'FanXing'), ('age', 29), ('grade', 60)]) print(c.keys()) #dict_keys(['name', 'age', 'grade']) print(c.values()) #dict_values(['FanXing', 29, 60])
4. 使用in检测一个键是否在字典中
a = ['name', 'age', 'grade'] b = ['FanXing', 29, 60] c = dict(zip(a, b)) print('sex' in c) #False print('name' in c) #True
字典的序列解包
序列解包用于字典时,默认是对“键”进行操作; 如果需要对键值对操作,则需要使用items();如果需要对“值”进行操作,则需要使用 values();
集合
集合是无序可变,元素不能重复。实际上,集合底层是字典实现,集合的所有元素都是字典中的“键对象”,因此是不能重复的且唯一的。