例如:
a=['a','b','zzz','ccc','ddd'] #before sorting
a=['b','a','zzz','ddd','ccc'] #after sorting
a.sort(key=len)对数据进行排序,但按字母顺序排列,但如何按长度排序,然后按反字母顺序排序?
发布于 2019-08-15 22:01:15
只需使用reversed函数:
a = list(reversed(sorted(a, key=lambda x: (-len(x), x))))
In [301]: a
Out[301]: ['b', 'a', 'zzz', 'ddd', 'ccc']发布于 2019-08-15 22:27:31
下面是另一种从cmp_to_key()使用functools的方法
import functools
def customsort(a, b):
if len(a) != len(b):
return -1 if len(a) < len(b) else 1
else:
if a < b:
return 1
elif a > b:
return -1
else:
return 0
def main():
a=['a','b','zzz','ccc','ddd']
a.sort(key=functools.cmp_to_key(customsort))
print(a)
main()输出
['b', 'a', 'zzz', 'ddd', 'ccc']发布于 2022-01-25 20:43:21
只需使用sort()方法即可。首先对降序列表进行排序,然后按值的长度排序:
#before sorting
a = ['a', 'b', 'zzz', 'ccc', 'ddd']
#after sorting
a = ['b', 'a', 'zzz', 'ddd', 'ccc']
a.sort(reverse=True)
a.sort(key=len)https://stackoverflow.com/questions/57516718
复制相似问题