sorted()
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sorted()相关的知识,希望对你有一定的参考价值。
一、sorted() 简单用法
sorted() 用于对序列进行排序,但是注意是产生一个新的序列,原来的序列的值不会被改变,比如定义 list = [3, 1, 4, 2, 5] ,执行 sorted(list) 之后返回结果为 [1, 2, 3, 4, 5] ,但是 list 的值仍然是 [3, 1, 4, 2, 5]
二、sorted() 复杂用法
语法:sorted(iterable, cmp=None, key=None, reverse=False)
(1) iterable:可迭代的参数,可以通过for循环去遍历的都叫可迭代
(2) cmp:用于比较的函数,比较什么由key决定,如果不写默认值为None
(3) key:指定根据字典的key还是value来排序,如果要使用这个参数需要用到operator模块,operator.itemgetter(0)表示根据key来排序,operator.itemgetter(1)表示根据value来排序
(4) reverse:如果是reverse = True则倒序排序,如果是reverse
= False则正序排序。默认是False
In [4]: x = {1:‘a‘, 2:‘b‘, 3:‘c‘, 4:‘d‘, 5:10, 9:3, 6:3} //先定义一个字典,我们用这个字典来练习怎么排序 In [5]: import operator //插入operator模块 In [6]: y = sorted(x.iteritems(), key=operator.itemgetter(0)) //第一个参数x.iteritems()先迭代然后交给后面的operator.itemgetter(0)来排序,0表示根据key来排序,1表示根据value来排序。至于为什么要迭代,用法跟print与return的区别一样,如果没有迭代,那么返回的只是一个生成器对象。 In [7]: y //查看排序后的值 Out[7]: [(1, ‘a‘), (2, ‘b‘), (3, ‘c‘), (4, ‘d‘), (5, 10), (6, 3), (9, 3)] In [10]: y = sorted(x.iteritems(), key=operator.itemgetter(0), reverse=True) //如果加上reverse=True表示倒序排序 In [11]: y Out[11]: [(9, 3), (6, 3), (5, 10), (4, ‘d‘), (3, ‘c‘), (2, ‘b‘), (1, ‘a‘)]
练习题:找出占用空间大的文件或目录
思路:先对目录做遍历然后组成一个字典,把文件名作为key,把文件大小作为value,然后用sorted倒序排序
#!/usr/bin/env python import sys import os import operator def get_dic(topdir): //先对目录做遍历然后组成一个字典,把文件名作为key,把文件大小作为value dic = {} a = os.walk(topdir) for p, d, f in a: for i in f: fn = os.path.join(p, i) f_size = os.path.getsize(fn) dic[fn] = f_size return dic if __name__ == ‘__main__‘: //用sorted()倒序排序然后打印出文件大小最大的前10个 dic = get_dic(sys.argv[1]) sorted_dic = sorted(dic.iteritems(), key=operator.itemgetter(1), reverse=True) for k, v in sorted_dic[:10]: print k, ‘-->‘, v
以上是关于sorted()的主要内容,如果未能解决你的问题,请参考以下文章
26. Remove Duplicates from Sorted Array(代码思路新奇)
4. Median of Two Sorted Arrays
面试代码基础二分法binary Search Sorted Array