13.高级变量类型
5)字典
(1)字典的定义:dictionary(字典)是除列表以外Python之中最灵活的数据类型。字典同样可以用来存储多个数据,通常用于存储描述一个物体的相关信息。
①字典和列表的区别:
(a)列表是有序的对象集合
(b)字典是无序的对象集合
②字典的语法结构:
(a)字典用 {} 定义
(b)字典使用键值对存储数据,键值对之间使用“,”分隔
键key是索引,值value是数据,键和值之间使用“:”分隔。
键必须是唯一的,必须可哈希 -> 不可变类型(字符串、数字或元组);值可以取任何数据类型
(2)字典常用操作
在ipython3中定义一个字典,例如:xiaoming = {}。输入xiaoming.按下TAB键,ipython会提示字典能够使用的函数如下:
①取值:dict[key]、dict.get(key,默认值)
(a)dict[老key],key不存在会报错。
(b)使用get方法取值:dict.get(key,默认值)
key不存在返回None,不会报错
使用get方法取值:键值不存在返回,可以返回默认值
②增加/修改dict[key]、dict.setdefault(key:value)、
(a)增加:dict[新key]=新value,key不存在会报错。
(b)修改:dict[老key]=新value
(c)使用setdefault方法新增,当字典中有该键时,不修改原值。当字典中没有该键时,才能新增
不论是否新增,执行完setdefault方法后,会使用key把value查询出来
setdefault应用:将列表中大于等于66的数字放入字典的key1对应的列表中,将小于66的数据存入key2对应的列表中。
列表:lst = [11, 22, 33, 44, 55, 66, 77, 88]
效果:dic = {"key1": [66, 77, 88], "key2": [11, 22, 33, 44, 55]}
方法1:
方法2:
③删除dict.pop(key)、 dict.popitem()、del、 dict.clear()
(a)dict.pop(key)删除指定键值对
(b)dict.popitem()删除最后一个键值对
(c)del dict[key]
(d)清空字典dict.clear()
④统计键值对数量len(dict)
⑤合并字典dict.update(dict_new)
(3)迭代遍历 for
遍历就是依次从字典中获取所有键值对
①for 循环内部使用的key的变量 in 字典
提示:在实际开发中,由于字典中每一个键值对保存数据的类型是不同的,所以针对字典的迭代遍历需求并不是很多②直接取值:for value in dict.values() (很少用)
③直接取key:for key in dict.keys() (很少用)
④直接取键和值:for key, value in dict.items()
注意:字典迭代遍历时,不能删除列表内容,否则会报错
⑤应用场景
在开发中,大多的应用场景是:
(a)使用多个键值对,存储描述一个物体的相关信息—描述更复杂的数据信息。
(b)再将多个字典放在一个列表中,再进行遍历,在循环体内部针对每一个字典进行相同的处理
(4)词典的嵌套
①字典汪峰
②购物车列表
6)set集合
集合类似字典的存储,但只存放key
集合的存储数据特点:可哈希、不可变、不重复、无序
{}可以表示集合
使用set()创建空集合,使用{}创建的是空字典
作用:可以帮助我们去除重复
(1)添加set.add()
练习:列表去重
方法一:
方法二:
方法三:
方法四(需要保留顺序):
(2)删除set.remove
①set.remove(key):key不存在时会报错
②set.discard(key) :key不存在时不会报错
③set.pop():随机删除数据,很少使用。(3)取值:迭代遍历for