13.高级变量类型

5)字典

(1)字典的定义:dictionary(字典)是除列表以外Python之中最灵活的数据类型。字典同样可以用来存储多个数据,通常用于存储描述一个物体的相关信息。

①字典和列表的区别:

(a)列表是有序的对象集合

(b)字典是无序的对象集合

②字典的语法结构:

(a)字典用 {} 定义

(b)字典使用键值对存储数据,键值对之间使用“,”分隔

键key是索引,值value是数据,键和值之间使用“:”分隔。

键必须是唯一的,必须可哈希 -> 不可变类型(字符串、数字或元组);值可以取任何数据类型

Python 字典可以用变量妈 python字典类型变量_Python 字典可以用变量妈


Python 字典可以用变量妈 python字典类型变量_python_02

(2)字典常用操作

在ipython3中定义一个字典,例如:xiaoming = {}。输入xiaoming.按下TAB键,ipython会提示字典能够使用的函数如下:

Python 字典可以用变量妈 python字典类型变量_迭代_03


①取值:dict[key]、dict.get(key,默认值)

(a)dict[老key],key不存在会报错。

Python 字典可以用变量妈 python字典类型变量_python_04


(b)使用get方法取值:dict.get(key,默认值)

key不存在返回None,不会报错

Python 字典可以用变量妈 python字典类型变量_python_05


使用get方法取值:键值不存在返回,可以返回默认值

Python 字典可以用变量妈 python字典类型变量_Python 字典可以用变量妈_06

②增加/修改dict[key]、dict.setdefault(key:value)、

(a)增加:dict[新key]=新value,key不存在会报错。

(b)修改:dict[老key]=新value

Python 字典可以用变量妈 python字典类型变量_键值对_07


(c)使用setdefault方法新增,当字典中有该键时,不修改原值。当字典中没有该键时,才能新增

Python 字典可以用变量妈 python字典类型变量_Python 字典可以用变量妈_08


不论是否新增,执行完setdefault方法后,会使用key把value查询出来

Python 字典可以用变量妈 python字典类型变量_迭代_09


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:

Python 字典可以用变量妈 python字典类型变量_Python 字典可以用变量妈_10


方法2:

Python 字典可以用变量妈 python字典类型变量_Python 字典可以用变量妈_11

③删除dict.pop(key)、 dict.popitem()、del、 dict.clear()

(a)dict.pop(key)删除指定键值对

Python 字典可以用变量妈 python字典类型变量_取值_12


(b)dict.popitem()删除最后一个键值对

Python 字典可以用变量妈 python字典类型变量_键值对_13


(c)del dict[key]

Python 字典可以用变量妈 python字典类型变量_迭代_14


(d)清空字典dict.clear()

Python 字典可以用变量妈 python字典类型变量_取值_15

④统计键值对数量len(dict)

Python 字典可以用变量妈 python字典类型变量_取值_16

⑤合并字典dict.update(dict_new)

Python 字典可以用变量妈 python字典类型变量_python_17

(3)迭代遍历 for

遍历就是依次从字典中获取所有键值对

①for 循环内部使用的key的变量 in 字典

Python 字典可以用变量妈 python字典类型变量_python_18


提示:在实际开发中,由于字典中每一个键值对保存数据的类型是不同的,所以针对字典的迭代遍历需求并不是很多②直接取值:for value in dict.values() (很少用)

Python 字典可以用变量妈 python字典类型变量_python_19

③直接取key:for key in dict.keys() (很少用)

Python 字典可以用变量妈 python字典类型变量_迭代_20

④直接取键和值:for key, value in dict.items()

Python 字典可以用变量妈 python字典类型变量_取值_21


注意:字典迭代遍历时,不能删除列表内容,否则会报错

Python 字典可以用变量妈 python字典类型变量_python_22

⑤应用场景

在开发中,大多的应用场景是:

(a)使用多个键值对,存储描述一个物体的相关信息—描述更复杂的数据信息。

(b)再将多个字典放在一个列表中,再进行遍历,在循环体内部针对每一个字典进行相同的处理

Python 字典可以用变量妈 python字典类型变量_迭代_23

(4)词典的嵌套

①字典汪峰

Python 字典可以用变量妈 python字典类型变量_python_24


②购物车列表

Python 字典可以用变量妈 python字典类型变量_python_25

6)set集合

集合类似字典的存储,但只存放key

集合的存储数据特点:可哈希、不可变、不重复、无序

{}可以表示集合

使用set()创建空集合,使用{}创建的是空字典

作用:可以帮助我们去除重复

(1)添加set.add()

Python 字典可以用变量妈 python字典类型变量_迭代_26


练习:列表去重

方法一:

Python 字典可以用变量妈 python字典类型变量_Python 字典可以用变量妈_27


方法二:

Python 字典可以用变量妈 python字典类型变量_python_28


方法三:

Python 字典可以用变量妈 python字典类型变量_取值_29


方法四(需要保留顺序):

Python 字典可以用变量妈 python字典类型变量_python_30

(2)删除set.remove

①set.remove(key):key不存在时会报错

Python 字典可以用变量妈 python字典类型变量_Python 字典可以用变量妈_31


②set.discard(key) :key不存在时不会报错

Python 字典可以用变量妈 python字典类型变量_迭代_32


③set.pop():随机删除数据,很少使用。(3)取值:迭代遍历for

Python 字典可以用变量妈 python字典类型变量_取值_33