dict使用key:value对的形式来储存数据。dict在存储数据的时候更加直观,因为作为key的索引可以用更易理解的方式存在。list和tuple的索引是冰冷的数字,不知道哪个是哪个。任何不可变变量都可以用作key,像数字,字符串,上一节所说的tuple都是不可变变量,它们都可以作为key;value的类型就更广了,所有不可变变量和可变变量都可以作为value。
6.3.1 dict的创建
dict使用大括号括起的逗号分隔的(key:value)对进行创建。比如说要记录学生的成绩,可以产生多个(学生姓名:学生成绩)的(key:value)对来进行创建。演示代码如下:
如果不确定字典里面到底有多少个元素,那么也可以先生成一个空的dict,再慢慢添加。演示代码如下:
上面的代码中,使用dict()来生成一个空字典是必要的。如果没有dict(),直接给b赋值的话会出现错误。
dict类型的数据还可以用二维数组来创建。先用list或者tuple生成多个(key,value)的序列,然后使用dict()进行类型转换,也可以生成一个字典。演示代码如下:
6.3.2 dict的访问
想要访问dict,只需要知道key值。
刚刚讲过,任何不可变变量都可以作为key值,数字,字符串,tuple都可以作为key值。演示代码段如下:
而list则不能作为key值
这里有一个有趣的小把戏,tuple里面其实是可以藏一个list的,这样tuple就变成了可变变量了。我们来看看它作为key会怎样。
可以看到,python很聪明地把这个小把戏戳穿了。tuple里面的list没能蒙混过关。
确定了key值,就可以通过key值获取数据。演示代码如下:
想要遍历dict,可以使用for语句进行。因为dict也是一个可迭代的类型。演示代码如下。
6.3.3 dict的增加和修改
如果想要增加一个key:value对,而dict里面不存在这个key,这个时候直接赋值即可。
如果key在dict里面已经存在了,那么赋值会修改原来的value值。
6.3.4 dict的删除
和list一样,想要删除dict的元素,可以通过del操作来删除。想要删除某个key:value对,只要使用del dict[key]操作就可以了。演示代码如下:
如果使用 del dict 会把整个dict删除。演示代码如下:
6.3.5 dict的字典推导式
和list类似,dict也有它的字典推导式,可以很快生成dict。只要了解list的列表推导式,应该很快就能够理解了。
6.3.6 使用dict构造二维数组
使用dict来构造二维数组,对比list会更加有可读性。比如说有三个学生 zhang,lee,zhao,分别进行了数学和语文考试,每个人分别有两个成绩。此时可以用两个dict来嵌套构成二维数组。下面展示了一个简单的嵌套字典。
访问的时候可以直接通过 学生和科目的key组合来定位。
如果需要修改可以通过两层的key来定位,再进行修改。
此时如果需要新增一个学生,需要先初始化一个dict,否则就会出错。
6.3.7 dict的有用方法
很多时候可能会想要知道dict里面都有什么key,用keys()方法就可以获取key的list。同时dict也有len()方法可以获取dict的长度。
这里要注意的是,keys()得到的list不是按照顺序排列的,也不是按照插入的顺序来排列的。python对于dict的key有一套二叉树排序,方便更快找到key。如果想要得到一个经过排序的key序列,可以对key序列使用sort()方法。
本文完
领取专属 10元无门槛券
私享最新 技术干货