Python爬虫、数据分析与可视化:工具详解与案例实战
上QQ阅读APP看书,第一时间看更新

2.5.4 通过sorted方法排序对象

sorted方法的作用是对所有指定的对象进行排序操作,语法如下:


sorted(iterable,key=None, reverse=False)

其中,参数iterable是待排序的序列;如果序列中有多个可以排序的元素,则可以通过参数key来定义待比较的元素;reverse表示排序方式,True表示降序,False表示升序,默认值是False。

在3个参数里,只有iterable是必须传入的,另外两个参数都是可选的。调用sorted方法后,能得到排好序的序列。在如下的SortedDemo案例中,我们将演示sorted函数的常见用法。


01 score = [98,57,100,95]
02 print(sorted(score)) # [57, 95, 98, 100]
03 # [100, 98, 95, 57]
04 print(sorted(score,reverse=True))
05 employee = [('Tom',10000,'B'), ('Peter',9000,'A'), ('John',15000,'C')]
06 sortedBySalary=sorted(employee, key=lambda x: x[1])
07 # [('Peter', 9000, 'A'), ('Tom', 10000, 'B'), ('John', 15000, 'C')]
08 print(sortedBySalary)
09 sortedLevel=sorted(employee, key=lambda x: x[2],reverse=True)
10 # [('John', 15000, 'C'), ('Tom', 10000, 'B'), ('Peter', 9000, 'A')]
11 print(sortedLevel)

第2行的sorted方法只有1个参数,默认是对score序列进行升序排列,从输出结果上能确认这点。在第4行的sorted方法里,同样是对score排序,但通过reverse参数指定为降序排列。

第5行定义的employee序列有多个维度,在第6行的sorted方法里,通过key定义的lambda表达式指定了根据x[1]来排序。从第8行的输出语句中我们能看到,排序好的sortedBySalary序列确实是按照每个维度的第2个数进行升序排列的。

在第9行的sorted方法里,同样通过由key参数指定的lambda表达式指定了待比较的元素,不过这里是x[2],也就是维度中的第3个数,而且通过reverse=True指定按降序排列。从第11行的输出结果上来看,能确认排序比较的元素和降序排列结果。