python排序中,sorted()方法是比较常用的。此方法有三个参数:iterable,key,reverse。
iterable是一个可迭代数据,常见的有列表,集合,元祖,字典。key表示用哪个值进行排序,reverse表示是升序还是降序,默认情况为升序。
列表
列表排序是一个最常见不过的了。
a_list = [1,22,33,11,21,22,100]
print(sorted(a_list))
结果为:
[1, 11, 21, 22, 33, 100]
稍复杂的列表可能是这样的:
c = [(97,"a"),(97,"y"),(97,"i"),(97,"b"),(97,"w"),(10,"10"),(100,"100")]
若需要以 列表c中的 每个元素的第一个数据进行排序,则:
print(sorted(c,key=lambda l:l[0], reverse=False))
结果为:
[(10, '10'), (97, 'a'), (97, 'y'), (97, 'i'), (97, 'b'), (97, 'w'), (100, '100')]
若需要以列表c中的每个元素的第一个数据排序后按照第二个数据排序,则:
print(sorted(c,key=lambda l:(l[0],l[1]), reverse=False))
结果为:
[(10, '10'), (97, 'a'), (97, 'b'), (97, 'i'), (97, 'w'), (97, 'y'), (100, '100')]
与列表排序相似的还有集合,元祖。
a_set = {1,22,33,11,21,24,100}
a_tuple = (1,22,33,11,21,24,100)
print(sorted(a_set))
print(sorted(a_tuple))
结果为:
[1, 11, 21, 22, 24, 33, 100]
[1, 11, 21, 22, 24, 33, 100]
字典
有时候我们需要对字典进行排序。比如有这么一个字典如下:
b = {"a":"A","g":"G","c":"C","v":"V","d":"V"}
若需要以字典的键进行排序,则:
print(sorted(b.items(),key=lambda kv:kv[0], reverse=False))
结果为:
[('a', 'A'), ('c', 'C'), ('d', 'V'), ('g', 'G'), ('v', 'V')]
若需要以字典的键进行倒序排序,则:
结果为:
[('v', 'V'), ('g', 'G'), ('d', 'V'), ('c', 'C'), ('a', 'A')]
若需要以字典的值进行排序,则:
print(sorted(b.items(),key=lambda kv:kv[1], reverse=False))
结果为:
[('a', 'A'), ('c', 'C'), ('g', 'G'), ('v', 'V'), ('d', 'V')]
若需要以字典的值先进行排序,后根据字典的键进行排序,则:
print(sorted(b.items(),key=lambda kv:(kv[1],kv[0]), reverse=False))
结果为:
[('a', 'A'), ('c', 'C'), ('g', 'G'), ('d', 'V'), ('v', 'V')]
注:若多维排序,则每个维度都是升序或者都是倒序,目前未发现多维排序某些维度可升序,某些维度可倒序的情况。