sorted(iterable,key,reverse) 函数
1.iterable 传入需要排序的对象,list,字典都(字典.items())行
2.key 通过什么排序
3.bool行是否需要降序,默认false
由于py3中没有cmp这个参数,可以通过 functools.cmp_to_key() 将 cmp函数 转化为 key
但是cmp函数需要返回[-1,0,1]这个三个数中的任意一个
注意:
1.key可以通过传入一个函数,然后通过传入的函数选择哪个参数进行排列,
print('*'*20)
list1 = [(1,'a',23),(2,'b',14),(3,'c',90),(3,'c1',89),(3,'c2',89)]
list1=sorted(list1,key=lambda x:x[0])
print(list1)
2.如果需要按多个条件排序,只有第一个条件为True才会按第二个条件排序,依次类推
print('*'*20)
list1 = [(1,'a',23),(2,'b',14),(3,'c',90),(3,'c1',89),(3,'c2',89)]
list1=sorted(list1,key=lambda x:(x[0],x[2]))
print(list1)
测试:传入一段字符串,按字符的重复次数从排序
垃圾代码,无惧何喷
s="初晴落景:晚霞聊自怡,初晴弥可喜。日晃百花色,风动千林翠。池鱼跃不同,园鸟声还异。寄言博通者,知予物外志。"
s_dict={}
for i in s:
if s_dict.get(i) is None:
s_dict[i]=1
continue
s_dict[i]=s_dict.get(i)+1
v_list=[]
for _,v in s_dict.items():
v_list.append(v)
v_list.sort()
print(v_list)
print(s_dict)
result=[]
for i in set(v_list):
print(i)
result.extend([k for k,v in s_dict.items() if v==i])
print(result)
采用标准库装逼
s="初晴落景:晚霞聊自怡,初晴弥可喜。日晃百花色,风动千林翠。池鱼跃不同,园鸟声还异。寄言博通者,知予物外志。"
from collections import Counter
s=Counter(s)
print("*"*20)
print(s)
s=sorted(s.items(),key=lambda v:v[1])
print(s)
网友评论