Python3 通过sorted函数实现对列表字典的排序
列表排序列表排序有两种方法实现,一种是列表自带的sort()方法,即...
列表排序列表排序有两种方法实现,一种是列表自带的sort()方法,即...
sorted(sys.values())sorted函数默认是根据键key排序的,所以想要根据值value排序,就需要在sys后面使用values(),获取字典的value值
new_sys2 = sorted(sys.items(), key=lambda d: d[1], reverse=False)其中d == (‘name’, ‘张三’) 或 (‘age’, ‘十八’)或(‘gender’, ‘man’), d[1]是获取每个元组中的第二个元素,就是原sys字典中的value;并将匿名函数的返回值返回给sorted函数的key参数
python名字排序_python 中文排序(按拼音) pypiny...
python 拼音排序_Python实现针对中文排序的方法 本文实例...
python sort和sorted的区别,使用和坑
sort和sorted区别:
(本文根据B站up主码农高天的视屏整理)
sort跟sorted都是python自带的排序函数,两者的使用方法基本一致。
最大的区别是sort会改变原有列表,而sorted不会改变原有列表并且会返回一个新列表。
sort 和sorted的使用:
a = [1,25,2,5,4,3,6]
b = sorted(a)
print(a)
print(b)
a.sort()
print(a)
打印结果如下,sort改变了原有列表,而sorted没有
我们在使用sort和sorted的时候可以搭配匿名函数使用,这种方法使用的频率较高,一定要掌握
# lst[lst] with sort
a = [[‘xueling’,0],[‘yujie’,2],[‘aitty’,1],[‘xls’,2]]
a.sort(key=lambda x:x[1],reverse=True)
print(a)
# 通过匿名函数来指定key,实现对lst中第二项进行排序
运行结果: [[‘yujie’, 2], [‘xls’, 2], [‘aitty’, 1], [‘xueling’, 0]]
往高处延伸
有时候我们会遇到两次排序的问题:
1,先根据数的次数进行排序
2,当数字相同时根据数的大小从大到小进行排序
我们可以这样写:
b = [2,3,3,2,3,1,4]
b = sorted(b,key=lambda x:(b.count(x),x),reverse=True)
print(b)
运行结果:[3, 3, 3, 2, 2, 4, 1]
sort 的坑
当然,我们也可以用sort来写
b.sort(key=lambda x:(b.count(x),-x))
print(b)
运行结果:[4, 3, 3, 3, 2, 2, 1]
我们发现使用sort运行的结果是错误的,这其实是sort本身编写的问题,涉及底层的架构,所以我们在写sort发现错误的时候,可以尝试把它改写成sorted来判断是不是我们代码本身的错误,sorted是不会错的。
这种错误,其实只会在sort二次排序时才会出现,像key=lambda x:x[1]这样的是不会出现排序错误的。
sort的这种错误,可以说是python的一个bug吧。