首页 > 代码库 > sorted()
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]: yOut[11]: [(9, 3), (6, 3), (5, 10), (4, ‘d‘), (3, ‘c‘), (2, ‘b‘), (1, ‘a‘)]
练习题:找出占用空间大的文件或目录
思路:先对目录做遍历然后组成一个字典,把文件名作为key,把文件大小作为value,然后用sorted倒序排序
#!/usr/bin/env pythonimport sysimport osimport operatordef 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 dicif __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()
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。