字典简述:

         字典是python中的一种数据结构类型,名字来源于生活,它的工作模式类似于我们查字典的过程。从数学的角度想就是 映射的表现形式。 一个字典由多项构成,每项又包括一对“键值对”,键就相当于列表种的索引,每个键对应一个值,每 个字典里不能有重复的键,但是键所对应的值可以是不唯一的;与列表不同的是字典的项是无序的。

        因为字典是无序的,所以字典不支持索引、切片,重复、连接也是没有意义的。

字典的优势:

          在生活中映射的模型非常多,所以字典自然也就应用广泛。

         比如我们手机上的电话簿,我们想寻找某人的电话号码,就会通过他的名字去查找他的电话号码,下面的例子如果我们将名字和电话号码分别放在两个列表中,然后通过索引去得到相应的电话号码显然是很麻烦的,如下图:

字典可以索引吗 字典有没有索引_浅复制

       通过从name列表中得到索引再去pho_num列表中去查找对应的电话号码:

字典可以索引吗 字典有没有索引_键值_02

字典可以索引吗 字典有没有索引_浅复制_03

      若能利用字典这种数据结构,以上的过程就会i大大简化。

字典的创建:

       1.方式一:直接创建

字典可以索引吗 字典有没有索引_字典可以索引吗_04

      这时我们想得到某个人的电话号码,只需输入键值,就能得到他的号码:

字典可以索引吗 字典有没有索引_键值_05

字典可以索引吗 字典有没有索引_键值_06

     2.方式二: 利用dict()函数创建:

1):通过其它映射序列建立字典:

字典可以索引吗 字典有没有索引_键值_07

字典可以索引吗 字典有没有索引_键值_08

2)通过关键字:

字典可以索引吗 字典有没有索引_字典可以索引吗_09

字典可以索引吗 字典有没有索引_数据结构_10

3.空字典的创建:

字典可以索引吗 字典有没有索引_数据结构_11

字典可以索引吗 字典有没有索引_浅复制_12

4.字典的嵌套:

字典可以索引吗 字典有没有索引_字典可以索引吗_13

       查找嵌套字典中相应的元素:

字典可以索引吗 字典有没有索引_浅复制_14

字典的基本操作:

      定义一个字典:

字典可以索引吗 字典有没有索引_浅复制_15

      下方图片是字典的基本操作方式:

字典可以索引吗 字典有没有索引_字典可以索引吗_16

     上图代码执行的结果:

字典可以索引吗 字典有没有索引_键值_17

字典的方法:

1. clear( ) : 清空字典

字典可以索引吗 字典有没有索引_字典可以索引吗_18

字典可以索引吗 字典有没有索引_字典可以索引吗_19

2. copy(): 进行替换操作时不会改变原字典的项; 但是修改(原地修改)了某个值后,原字典会被修改

      定义一个字典,并进行浅复制:

字典可以索引吗 字典有没有索引_键值_20

     对复制后的字典进行替换操作后,并没有影响原字典的内容:

字典可以索引吗 字典有没有索引_字典可以索引吗_21

字典可以索引吗 字典有没有索引_字典可以索引吗_22

       但若进行了原地修改这类操作,就会影响原字典的项:

字典可以索引吗 字典有没有索引_字典可以索引吗_23

3.deepcopy():深复制,这种复制方法就解决了上一个浅复制遗留的问题:

字典可以索引吗 字典有没有索引_字典可以索引吗_24

字典可以索引吗 字典有没有索引_数据结构_25

4.fromkeys():用给定的键建立新字典,键默认对应的值为None,也可以指定键默认对应的值。

字典可以索引吗 字典有没有索引_字典可以索引吗_26

字典可以索引吗 字典有没有索引_浅复制_27

5. get(): 比较宽松的查看字典中value值的方法:

字典可以索引吗 字典有没有索引_浅复制_28

字典可以索引吗 字典有没有索引_键值_29

6.items() : 将字典中的所有项以列表的方式返回:

字典可以索引吗 字典有没有索引_数据结构_30

字典可以索引吗 字典有没有索引_数据结构_31

7.keys(): 将字典中的键以列表的方式返回:

字典可以索引吗 字典有没有索引_键值_32

字典可以索引吗 字典有没有索引_浅复制_33

8. values() : 将字典中的值以列表的方式返回:

字典可以索引吗 字典有没有索引_数据结构_34

字典可以索引吗 字典有没有索引_浅复制_35

9.pop(): 找到字典中指定key值对应的value值返回,并将该项从字典中删除。若key不存在会报错

字典可以索引吗 字典有没有索引_浅复制_36

字典可以索引吗 字典有没有索引_字典可以索引吗_37字典可以索引吗 字典有没有索引_字典可以索引吗_38

字典可以索引吗 字典有没有索引_键值_39

10. popitem(): 随机弹出字典中的项:

字典可以索引吗 字典有没有索引_键值_40

字典可以索引吗 字典有没有索引_键值_41

11. update():用来更新原来字典中需要修改的项和添加原来不存在现在要添加进去的项

字典可以索引吗 字典有没有索引_浅复制_42

字典可以索引吗 字典有没有索引_键值_43

12. setdefault( )

用法一 : 当字典中不存在某个键值时,可以使用setdefault()去添加键值或者键对值。

字典可以索引吗 字典有没有索引_键值_44

字典可以索引吗 字典有没有索引_浅复制_45

字典可以索引吗 字典有没有索引_字典可以索引吗_46

 

字典可以索引吗 字典有没有索引_字典可以索引吗_47

字典可以索引吗 字典有没有索引_浅复制_48

用法二: 和get() 的用法一样,得到某key值所对应的value值,若value值不存在则返回None。

字典可以索引吗 字典有没有索引_键值_49字典可以索引吗 字典有没有索引_数据结构_50

字典可以索引吗 字典有没有索引_数据结构_51

字典可以索引吗 字典有没有索引_字典可以索引吗_52