Skip to main content
 首页 » 编程设计

Python 字典排序

2025年05月04日14zengkefu

我有一个python字典

var = {'count': [1, 1, 1, 1, 1], 
       'path': ['/media/anurag/Work/search_script/masterfile.txt', 
                "/media/anurag/Work/search_script/Women's Running Shoes/Women's Running Shoes_2.csv", 
                "/media/anurag/Work/search_script/Men's Running Shoes/masterfile.txt", 
                "/media/anurag/Work/search_script/Men's Running Shoes/Men's Running Shoes_1.csv", 
                "/media/anurag/Work/search_script/Men's Running Shoes/output.txt"], 
       'modified': [1502974843.8277025, 1501594022.454686, 1501945289.3378062, 
                    1501593976.6210368, 1501945143.4162745], 
       'row': [9541, 8723, 1664, 506, 2200]} 

现在我必须根据 modified 作为键进行排序。不扰乱秩序。 为此,我使用了 pandas:

我的 Pandas 解决方案是

In [1]: import pandas as pd 
 
In [2]: var = {'count': [1, 1, 1, 1, 1], 'path': ['/media/anurag/Work/search_script/masterfile.txt', "/media/anurag/Work/search_script/Women's Running Shoes/Women's Running Shoes_2.csv", "/media/anurag/Work/search_script/Men's Running Shoes/masterfile.txt", "/media/anurag/Work/search_script/Men's Running Shoes/Men's Running Shoes_1.csv", "/media/anurag/Work/search_script/Men's Running Shoes/output.txt"], 'modified': [1502974843.8277025, 1501594022.454686, 1501945289.3378062, 1501593976.6210368, 1501945143.4162745], 'row': [9541, 8723, 1664, 506, 2200]} 
 
In [3]: search_result = pd.DataFrame.from_dict(var) 
 
In [4]: search_result.sort_values('modified', inplace=True, ascending=False) 
 
In [5]: search_result 
Out[5]:  
   count      modified                                               path  \ 
0      1  1.502975e+09    /media/anurag/Work/search_script/masterfile.txt    
2      1  1.501945e+09  /media/anurag/Work/search_script/Men's Running...    
4      1  1.501945e+09  /media/anurag/Work/search_script/Men's Running...    
1      1  1.501594e+09  /media/anurag/Work/search_script/Women's Runni...    
3      1  1.501594e+09  /media/anurag/Work/search_script/Men's Running...    
 
    row   
0  9541   
2  1664   
4  2200   
1  8723   
3   506  

我可以不用 pandas 做这个吗?

请您参考如下方法:

您可以将对象存储为字典映射,然后使用适当的排序标准(由 key 指定)对此类对象的列表进行排序。像下面这样的东西-

var = {'count': [1, 1, 1, 1, 1], 'path': ['/media/anurag/Work/search_script/masterfile.txt', "/media/anurag/Work/search_script/Women's Running Shoes/Women's Running Shoes_2.csv", "/media/anurag/Work/search_script/Men's Running Shoes/masterfile.txt", "/media/anurag/Work/search_script/Men's Running Shoes/Men's Running Shoes_1.csv", "/media/anurag/Work/search_script/Men's Running Shoes/output.txt"], 'modified': [1502974843.8277025, 1501594022.454686, 1501945289.3378062, 1501593976.6210368, 1501945143.4162745], 'row': [9541, 8723, 1664, 506, 2200]} 
 
objects = [{field: value[i] for field,value in var.items()} 
           for i in range(len(var['count']))] 
 
objects.sort(key=itemgetter('modified')) # you may add reverse=True as per need