参考下面的代码,第一个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元组内的列表等等
请咨询