python学习(4)字典


字典的关键字是dict

字典的特性:

1.字典是无序的 (数据大的时候,每次输出是不一样的)

2.字典是key-value的形式来存储的 (键值对:冒号隔开,冒号前面的叫键key,冒号后面的叫值value)

获取所有的key:

变量.keys()       (加s)

获取所有的value:

变量.values()      (加s)

获取所有的对:

变量.items()        (加s)


items()输出的结果是上面这样,不是字典格式(键值对),所以输出的时候要像这样:加引号↓

 

字典元素的删除:

del 变量[“键”]

字典元素的新增:

变量["键"]=值

获取某个value的值:

变量.get(键)     ——方法1
变量[键]         ——方法2 (建议使用)

 

两个字典追加:

字典1.update(字典2)

相当于list里面的extend()。

  (给字典1添加字典2,把字典2追加到字典1中,2没有变)

实现字典的有序:

方式1:sorted()

方式2:从collections中导入OrderedDict类

方式1:字典排序

sorted(字典)

排序规则:

1.如果是数字,默认是从小到大

2.如果是字符串,内部处理的思路是把字符串转为数字,然后和1的规则一样

3.如果是多个字符串,比如aa,ab,那么这个时候它的规则是:

A、aa和ab先比较第一个字符串,发现第一个相同,就比较第二个

B、比较第二个,比如是字符串转为数字,规则与1相同

4.把字符串转为数字,使用的内部函数是ord()

5.排序比较必须是相同的数据类型(如果不同:有数字和字符串比较,就给数字带引号转成字符串类型)

(1)以循环输出的第一位排序:(也就是key排序,索引为0)

  (注:key=lamda是关键字不能变,没学不懂现在也不用管,item是自定义的,[0]是索引为0。输出的结果是列表类型,强制转换为dict类型)

例:

 (2)以循环输出的第二位排序:(也就是value排序,索引为1)

 例:

 方式2:从collections中导入OrderedDict类

 前两句定义dict1是顺序字典,然后写入数据,最后强制转换类型

复杂结构获取数据:

先看清楚序列的结构,列表中获取元素是用索引,字典中获取值是用键。

获取多个字典种相同的键对应的值,所有放到一个新的列表里:

例1:取出以下数据中的所有职位:

例1解释:

           

 定义一个空列表,for in 输出字典dict1的“datas”键对应的值(也就是item,如左图),append :把这些字典中"职位"对应的值   加到空列表里。

 例2: