使用operator.itemgetter来处理字典排序

时间:2014-06-03 16:06:18

标签: python python-2.7 dictionary sorted

参考下面的代码,第一个for循环可以很容易地用于字典中的排序,并且它可以很好地工作。

import operator

myExample = {'Item1': 3867, 'Item2': 20, 'Item3': 400, 'Item4': 100, 'Item5': 2870, 'Item6': 22, 'Item7': 528, 'Item8': 114}


for w in sorted(myExample, key=myExample.get, reverse=False):
  print w, myExample[w]

print ("\n")

for w in sorted(myExample, key=operator.itemgetter(0)):
    print w, myExample[w] 

但不知怎的,我被另一个线程告知,由于效率原因,建议使用operator.itemgetter(index)方法执行排序。但是第二个for循环在我的情况下永远不会起作用。

也许我应该首先阅读文档,这就是我得到的:

  
    
      

itemgetter(1)(' ABCDEFG')       ' B'

             

itemgetter(1,3,5)(' ABCDEFG')       (' B',' D',' F')

             

itemgetter(片(2,无))(' ABCDEFG')       ' CDEFG'

    
  

这个例子很简单,但说实话,我不知道如何将这个链接回字典案例。我应该如何使用itemgetter中的索引和不同的索引会产生什么样的影响?我尝试了从0到4的所有索引,没有一个给我一个升序排序结果,从索引5开始会出错。

在文档中,有一个元组大小写的例子,但它不适用于字典。

  
    
      

inventory = [(' apple',3),(' banana',2),(' pear',5),'橙色',1)]

             

getcount = itemgetter(1)

             

map(getcount,inventory)

    
  

[3,2,5,1]

  
    
      

已排序(inventory,key = getcount)

    
  

[(' orange',1),(' banana',2),(' apple',3),(' pear&# 39;,5)]

回到Origin,我仍然希望了解如何在itemgetter中使用索引以及它在不同情况下的作用如tuple VS词典VS列表VS只有一个字符串VS元组内的列表等等

请咨询

0 个答案:

没有答案