按照字典排序,
按照字典的value排序,類似sort -k命令
import operator
x = {1:2,3:4, 4:3, 2:1, 0:0}
sorted x =sorted(x.iteritems(),
key = operator.itemgetter(1))
0表示根據key排序,1表示根據value排序
In [33]: sorted(x.iteritems(),key=operator.itemgetter(0))
Out[33]: [(0, 0), (1, 2), (3, 4), (4, 3), ('1', 2)]
In [34]: sorted(x.iteritems(),key=operator.itemgetter(1))
Out[34]: [(0, 0), (1, 2), ('1', 2), (4, 3), (3, 4)]reverse默認為false,everse=True表示倒序排列
sorted_y = sorted(x.iteritems(),
key=operator.itemgetter(1),reverse=True)
In [35]: sorted(x.iteritems(),key=operator.itemgetter(1),reverse=True)
Out[35]: [(3, 4), (4, 3), (1, 2), ('1', 2), (0, 0)]例子:找出占用空間大的文件
os.walk #對目錄遍歷
os.path.getsize #獲取文件的大小
dict sort(top10)
#!/usr/bin/env python
#ecoding=utf8
import os
import sys
import operator
def gen_dic(topdir):
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__':
dic = gen_dic(sys.argv[1]) #生成一個字典,顯示argv[1]目錄的文件和文件大小
sorted_dic = sorted(dic.iteritems(),key=operator.itemgetter(1),reverse = True)
print sorted_dic
[root@133 systeminformation]# pwd
/opt/python/systeminformation
[root@133 systeminformation]# ll
總用量 32
-rw-r--r-- 1 root root 427 12月 2 14:58 1_md5.py
-rw-r--r-- 1 root root 453 12月 2 16:48 1_walk.py
-rw-r--r-- 1 root root 425 10月 24 05:57 hashlib2.py
drwxr-xr-x 2 root root 4096 10月 24 06:03 test
-rw-r--r-- 1 root root 527 12月 6 16:00 top10.py
-rw-r--r-- 1 root root 430 10月 25 21:56 walk1.py
-rw-r--r-- 1 root root 128 10月 25 18:07 yield1.py
-rw-r--r-- 1 root root 680 10月 25 21:27 yield2.py
[root@133 systeminformation]# python top10.py . #打印當前目錄下文件,根據大小排序
[('./yield2.py', 680), ('./top10.py', 527), ('./1_walk.py', 453), ('./walk1.py', 430), ('./1_md5.py', 427), ('./hashlib2.py', 425), ('./yield1.py', 128), ('./test/b', 0), ('./
test/a', 0)][root@133 systeminformation]# vim top10.py
#!/usr/bin/env python
#ecoding=utf8
import os
import sys
import operator
def gen_dic(topdir):
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__':
dic = gen_dic(sys.argv[1]) #生成一個字典,顯示argv[1]目錄的文件和文件大小
sorted_dic = sorted(dic.iteritems(),key=operator.itemgetter(1),reverse = True)
for k,v in sorted_dic[:10]: #只顯示0-9的大小占前10的文件
print k,v
[root@133 systeminformation]# python top10.py .
./yield2.py 680
./top10.py 556
./1_walk.py 453
./walk1.py 430
./1_md5.py 427
./hashlib2.py 425
./yield1.py 128
./test/b 0
./test/a 0免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。