python序列(列表,元组,字典)的常用排序
列表
正向排序
sort()
>>> list=[1,6,3,4,5,2] >>> list.sort() >>> list [1, 2, 3, 4, 5, 6]
sorted()
>>> sorted([1,6,3,4,5,2]) [1, 2, 3, 4, 5, 6]
sort与sorted区别
sort是永久的,而sorted是临时的。
逆向排序
sort()
>>> list=[1,6,3,4,5,2] >>> list.sort(reverse=True) >>> list [6, 5, 4, 3, 2, 1]
sorted()
>>> sorted([1,6,3,4,5,2],reverse=True) [6, 5, 4, 3, 2, 1]
反转排序
reverse()
>>> list=[1,6,3,4,5,2] >>> list.reverse() >>> list [2, 5, 4, 3, 6, 1]
切片方法
>>> list=[1,6,3,4,5,2] >>> list[::-1] [2, 5, 4, 3, 6, 1]
多层列表排序
#对列表的第二个元素排序
>>> list=[('b',6),('a',1),('c',3),('d',4)] >>> list.sort(key=lambda x:x[1]) >>> list [('a', 1), ('c', 3), ('d', 4), ('b', 6)]
#对列表的第二个元素排序后,再对第一个元素排序
>>> list=[('b',1),('a',1),('c',3),('d',4)] >>> list.sort(key=lambda x:(x[1],x[0])) >>> list [('a', 1), ('b', 1), ('c', 3), ('d', 4)]
元组
元组排序可通过list函数将元组转换成列表,采用列表排序方法即可。
元组列表间转换方法:
list1=[1,2,3] tup1=tuple(list1) print(tup1) print(list(tup1)) 运行结果 (1, 2, 3) [1, 2, 3]
字典
通过key排序
d = {'a': 2, 'A': 1, 'c': 3, 'b': 2} sorted_key_list = sorted(d) #正向排序 #sorted_key_list = sorted(d,reverse=True) #逆向排序 print(sorted_key_list) sorted_dict = list(map(lambda x:{x:d[x]}, sorted_key_list)) print(sorted_dict) 运行结果 ['A', 'a', 'b', 'c'] # 根据ascii码大小排序 [{'A': 1}, {'a': 2}, {'b': 2}, {'c': 3}]
通过value排序
d = {'a': 2, 'A': 1, 'c': 3, 'b': 2} sorted_key_list = sorted(d, key=lambda x:d[x]) #正向排序 # sorted_key_list = sorted(d, key=lambda x:d[x], reverse=True) #逆向排序 print(sorted_key_list) sorted_dict = list(map(lambda x:{x:d[x]}, sorted_key_list)) print(sorted_dict) 运行结果: ['A', 'a', 'b', 'c'] [{'A': 1}, {'a': 2}, {'b': 2}, {'c': 3}]
PS:
Map函数在python2中返回的是一个列表,而在python3中返回的是一个迭代器(地址)。故想以列表输出,需要在map前添加list,转换下格式。