python学习(4)字典
字典的关键字是dict
字典的特性:
1.字典是无序的 (数据大的时候,每次输出是不一样的)
2.字典是key-value的形式来存储的 (键值对:冒号隔开,冒号前面的叫键key,冒号后面的叫值value)
获取所有的key:
变量.keys() (加s)
获取所有的value:
变量.values() (加s)
获取所有的对:
变量.items() (加s)
items()输出的结果是上面这样,不是字典格式(键值对),所以输出的时候要像这样:加引号↓
字典元素的删除:
del 变量[“键”]
字典元素的新增:
变量["键"]=值
变量.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: