迟到的短文
0、前提讲解
0.1 lambda 参数 : 表达式
lambda x:x
第一个x,在冒号前,表示判断等效于 if x : ,后面则为返回x ,也可以对x进行操作
if x :
return x
0.2 sorted()函数常用内容
sorted(排序对象, key=排序根据的内容 ,cmp=排序的前后两个单独元素, reverse=False)
其他人的笔记:key 和 reverse 比一个等价的 cmp 函数处理速度要快。这是因为对于每个列表元素,cmp 都会被调用多次,而 key 和 reverse 只被调用一次
后面主要介绍 key 和 reverse 的组合进行排序
给出一个cmp使用的例子
L=[('b',2),('a',1),('c',3),('d',4)]
sorted(L, cmp=lambda x,y:cmp(x[1],y[1])) # 利用cmp函数,这里的x,y 单次循环的第一次,就是 x,y=('b',2),('a',1)
x[1]==2
y[1]==1
结果就是 ('b',2)与('a',1)调换顺序
0.3 字典对象的 items() 方法/函数
items()就是把字典里的每个keys values 组成个元组,依次传出来总体也是一个元组
dict = {'Name': 'Runoob', 'Age': 7}
for i,j in dict.items(): #dict.items() 返回的实际上是元组((key1,value1)(key2,value2)(key3,value3))中的一个元组元素(key1,value1)
#左侧用i,j 两个元素接住key1,value1;以此类推
print(i, ":\t", j)
0.4 字典对象的 defaultdict()方法/函数
from collections import defaultdict
dict1 = defaultdict(int)
dict1[2] ='two'
dict2 = defaultdict(set)
dict3 = defaultdict(str)
dict4 = defaultdict(list)
dict5 = defaultdict(dict)
print(dict1[1])
print(dict2[1])
print(dict3[1])
print(dict4[1])
print(dict5[1])
结果
0 #这里被强制转换为int 整数0了
set() #set 集合类型
#str 字符串类型,其实就是空字符串 “”
[] #list 列表类型
{} #dict 字典类型
1、普通字典内容排序
- 建立dict_sort 的keys 如下
abcd123_c1
abcd12_c2
abcd23_c1
abcd21_c1
dict_sort 内容建立如下
{"abcd123_c1":1,"abcd12_c2":2,"abcd23_c1":3,"abcd21_c1":4}
1.1 排序 key;
sorted(dict.keys(), key=lambda x:x ,reverse=False)
1.2 排序value;
sorted(dict.values(), key=lambda x:x ,reverse=False)
#只是单纯的排序key或者value,只是返回元组;
1.3 split字符串后进行排序
这里利用split,对多个分列元素进行排序
for name in sorted(dict.keys(), key=lambda x:(x.split('_c')[0],int(x.split('_c')[1])) ,reverse=False):
pass
解析
key=lambda x:(x.split('_c')[0],int(x.split('_c')[1])) 解析
结构如下:key=lambda x:(a,b),曲两个值作为第一比对和第二比对条件#参考excel中的高级排序
x.split('_c')[0],对x使用字符串“_c” 分割,取第一个元素
这里是对“_c'”前后两个内容作为第一第二排序条件
#pass 只是一个占位符,编程时函数或者循环里不知道写什么可以写pass,类似 continue,什么也不做
多列排序
可以根据多个条件进行排序,这里用x的第0,3,4索引的内容作为第一,第二,第三排序条件
a=[[1,3,4] ,[2,4,2],[2,3,6]]
#这里时一个多维列表
a.sort(key=lambda x:(x[0],int(x[3]),int(x[4])))
排序结果:
a=[[1,3,4] ,[2,3,6],[2,4,2]]
默认升序,添加 reverse=True 可以倒序排序
根据特殊结构排序
test = defaultdict(list)
test={ "key1":[1,2,3,4], "key2:"[3,4,5,6] }
items = sorted(test.items(), key=lambda x:x[1][3], reverse=True)
#test.items() 返回时一个列表 ("key1",[1,2,3,4])
x[1] 则是[1,2,3,4]
x[1][3] 的话就是 4了
2、复杂列表排序
利用 key 和 reverse
L=[('b',2),('a',1),('c',3),('d',4)]
sorted(L, key=lambda x:x[1]))
利用cmp函数
L=[('b',2),('a',1),('c',3),('d',4)]
sorted(L, cmp=lambda x,y:cmp(x[1],y[1]))
这里的x,y 单次循环的第一次,就是 x,y=('b',2),('a',1)
x[1]==2
y[1]==1
结果就是 ('b',2)与('a',1)调换顺序
参考网址:
#参考网址并非完全的都看一遍;挑取对自己有用的信息看
Python字典按key、value排序问题详解
python中defaultdict用法详解
#说明defaultdict的用法就是设定好字典value的变量
Python sorted() 函数
#了解基本用法,或者说常说的函数原型,其实就是函数用起来时的基本参数有哪些
网友评论