按照字典排序
admin
2023-08-02 08:26:42
0

按照字典排序,


按照字典的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


相关内容

热门资讯

美政客唬人:万一中国商船藏导弹... 【文/观察者网 独生】这简直就是危言耸听!美国印第安纳州联邦参议员托德·扬(Todd Young)近...
声网联合网易智企-易盾推出内容... 随着直播、语聊、社交、游戏等实时互动场景持续火热,内容安全已经成为平台稳定运营的基础能力。对于此类场...
【社论】向着科技强国的目标坚定... 7月8日上午,国家科学技术奖励大会、两院院士大会、中国科协第十一次全国代表大会在京召开。习近平为国家...
7英寸+8000mAh!刚公布... 红米Note17开启预热,最大的惊喜是7英寸OLED超大屏和8000毫安时电池,搭配千元机的价格和定...
肯纳金属申请预加载铣刀专利,能... 国家知识产权局信息显示,肯纳金属公司申请一项名为“预加载铣刀”的专利,公开号CN122352957A...
原创 红... 红米新机继续推出,6月已推出红米K90至尊版,现在预热新一代小金刚,可谓是新机连连。红米拥有四大系列...
换车计划如何影响长期持有更关键... 在汽车消费过程中,换车是许多车主会面临的决策。而换车计划对于车辆长期持有来说有着至关重要的影响,这其...
日本也想凑热闹,明日将测试发射... 据《日经亚洲》报道,日本宇宙航空研究开发机构(JAXA)将于当地时间7月11日发射可回收火箭RV-X...
消息称以色列愿参与对伊打击,正... △霍尔木兹海峡(资料图)据以色列方面10日消息,以色列已向美国表示,以方愿参与美国对伊朗的进一步军事...
大金空调绿灯一闪一闪内外机不启... 1、检查空调设置的模式是否正确,比如空调遥控器设置的模式是制热,送风,抽湿等,及时的更换空调模式,使...