python3 sorted用法
2019-04-26 本文已影响0人
cca1yy
1. 数字排序
使用sorted()函数可以对list进行排序 使用key函数实现自定义排序。这一行的命令包含三个步骤。首先,使用key函数依次处理list内的每个元素,得到keys = [36, 5, 12, 9, 21];其次,使用sorted函数对处理后的keys序列进行排序,得到temps = [5, 9, 12, 21, 36]; 最后,将temps和原始序列[36, 5, -12, 9, -21]一一对应起来,按照原始序列的数值,temps的顺序输出2. 字符串排序
按照字符串首字母的字典序对字符串进行排序 忽略字符的大小写,对字符串按照字典序从小到大的顺序排列 忽略字符的大小写,对字符串按照字典序从大到小的顺序排列3. 对特殊的list排序,即list内部是元组,如 L = [('Bob', 75), ('Adam', 92), ('Bart', 66), ('Lisa', 88)]
自定义排序, 此处的itemgetter函数获取的不是值,而是定义了一个函数,通过该函数作用到对象上才能获取值。实际使用时,a = [1,2,3], b = operator.itemgetter(1,0), 然后将b作用于a---print(b(a))得到值为(2,1)上图中,sorted(L, key=itemgetter(0)),即按照每个元组的第一个元素对所有元组进行排序。sorted(L, key=itemgetter(1)),即按照每个元组的第二个元素对所有元组进行排序。 sorted(L, key=itemgetter(1),reverse = True),即按照每个元组的第二个元素对所有元组逆序排序。
operator.itemgetter使用方法廖雪峰官网例题:
题目描述
#sortedByName.py
class Solution:
def by_name(self, t): #按照姓名排序
return t[0]
def by_score(self, t): #按照成绩排序
return t[1]
if __name__ == "__main__":
L = [('Bob', 75), ('Adam', 92), ('Bart', 66), ('Lisa', 88)]
print("原始序列", L)
ss = Solution()
L2 = sorted(L, key = ss.by_name)
print("按照姓名排序",L2)
L3 = sorted(L, key = ss.by_score)
print("按照成绩排序",L3)
L4 = sorted(L, key = ss.by_score, reverse = True)
print("按照成绩逆序排序",L4)
代码执行结果
4. 使用sorted()函数进行多级排序
例如:
students = [('john', 'A', 15), ('jane', 'B', 12), ('dave', 'B', 10)]
sorted(students, key=operator.itemgetter(1,2)) #根据第二个域和第三个域进行排序
先根据第二个域进行排序,再根据第三个域进行排序