1、list 基础排序
In[2]:
aList = [4, 5, 1, 2, 12, 34, 56, 9 ,80]
aList.sort() #默认按升序排列
print(aList)
Out[3]:
[1, 2, 4, 5, 9, 12, 34, 56, 80]
In[4]:
aList.sort(reverse=True) #按降序排列
print(aList)
Out[5]:
[80, 56, 34, 12, 9, 5, 4, 2, 1]
2、list 嵌套排序
# 方法1
In[1]:
def my_key1(x):
return x % 10
def my_key2(x):
return x[1]
aList.sort(key=my_key1) #根据key函数,按照个位数进行升序排列
print(aList)
Out[2]:
[80, 1, 12, 2, 34, 4, 5, 56, 9]
In[3]:
aList = [(4, 'ab'), (56, 'c'), (1, 'bb'), (102, 'a')]
aList.sort(key = my_key2) #按照每个元组的第2分量,即字符串排序
print(aList)
Out[4]:
[(102, 'a'), (4, 'ab'), (1, 'bb'), (56, 'c')]
# 方法2
In[1]:
import operator
target_list = [["A",3],["B",2],["C",1]]
# 默认从小到大排序,如果想从大到小排序,可:
# target_list.sort(key=operator.itemgetter(1), reverse=True)
target_list.sort(key=operator.itemgetter(1))
print(target_list)
Out[2]:
[['C', 1], ['B', 2], ['A', 3]]
# 方法3
1)按照元组的第一个值从小到大排序
2)如果第一个值相同, 则按照元组第2个值从大到小排序
In[1]:
a = [[2,3], [4,1], (2,8), (2,1), (3,4)]
b = sorted(a,key=lambda x: (x[0], -x[1]))
print(b)
Out[2]:
[(2, 8), [2, 3], (2, 1), (3, 4), [4, 1]]