python学习(4)字典
字典的关键字是dict
字典的特性:
1.字典是无序的 (数据大的时候,每次输出是不一样的)
2.字典是key-value的形式来存储的 (键值对:冒号隔开,冒号前面的叫键key,冒号后面的叫值value)
获取所有的key:
for..in 变量.keys() (加s)
获取所有的value:
for .. in 变量.values() (加s)
获取所有的对:
for .. in 变量.items() (加s)
items()输 出的结果是上面这样,不是字典格式(键值对),所以输出的时候要像这样:加引号↓

字典元素的删除:
del 变量[键]

字典元素的新增:
变量[键]=值

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

字典1.update(字典2)
相当于list里面的extend()。

(给字典1添加字典2,把字典2追加到字典1中,2没有变)
√实现字典的有序:
方式1:sorted()
方式2:从collections中导入OrderedDict类
方式1:字典排序
sorted(字典的对,key)
排序规则:
1.如果是数字,默认是从小到大
2.如果是字符串,内部处理的思路是把字符串转为数字,然后和1的规则一样
3.如果是多个字符串,比如aa,ab,那么这个时候它的规则是:
A、aa和ab先比较第一个字符串,发现第一个相同,就比较第二个
B、比较第二个,比如是字符串转为数字,规则与1相同
4.把字符串转为数字,使用的内部函数是ord()
5.排序比较必须是相同的数据类型(如果不同:有数字和字符串比较,就给数字带引号转成字符串类型)
(1)把字典的对放入lambda函数,以第一位排序:(也就是以字典的key排序,索引为0)


(注:sorted函数中传入源数据dict1.item(),就是字典所有的项,key是sorted函数中的参数 表示以什么做为排序,key参数中用了lambda表达式 表示输入的数据取索引为0的,也就是字典的键。输出的结果是列表类型,强制转换为dict类型)
例:

(2)把字典的对放入lambda函数,以第二位排序:(也就是value排序,索引为1)

例:

方式2:从collections中导入OrderedDict类

导入OrderedDict类,对类进行实例化,字典dict1就是类实例化的对象,这时它就是一个有顺序的字典,现在编辑字典都是有顺序的,最后强制转换类型。
复杂结构获取数据:
先看清楚序列的结构,列表中获取元素是用索引,字典中获取值是用键。
dict1={"status":0,"msg":"ok","datas":
[
{"company":"华为","职位":"测试开发工程师"},
{"company":"腾讯云","职位":"Go开发工程师"},
{"company":"易点天下","职位":"Java开发工程师"}
]}


获取多个字典中相同的键对应的值,所有放到一个新的列表里:
例1:取出以下数据中的所有职位:

例1解释:

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



浙公网安备 33010602011771号