例如:
a=['a','b','zzz','ccc','ddd'] #before sorting
a=['b','a','zzz','ddd','ccc'] #after sorting
a.sort(key=len)
按字母顺序对数据进行排序,但如何按长度排序并以反向字母顺序排列列表?
只需要使用reversed
函数:
a = list(reversed(sorted(a, key=lambda x: (-len(x), x))))
In [301]: a
Out[301]: ['b', 'a', 'zzz', 'ddd', 'ccc']
functools
中的 cmp_to_key()
函数: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()
Output:
['b', 'a', 'zzz', 'ddd', 'ccc']
只需使用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)