机器学习实战代码清单2-1中的最后3行代码中:
sortedClassCount=sorted(classCount.iteritems(),key=operator.itemgetter(1),reverse=True)
书上的注释是:
classCount.iteritems()将classCount字典分解为元组列表,operator.itemgetter(1)按照第二个元素的次序对元组进行排序,reverse=True是逆序,即按照从大到小的顺序排列
为了更好的理解这行代码,我们来看几个例子:
>>> dict={}
>>> import operator
>>> dict={}
>>> dict['A']=2
>>> dict['B']=1
>>> dict['C']=3
>>> print dict
{'A': 2, 'C': 3, 'B': 1} #创建了一个字典,名字为dict
>>>Countlabels_max=sorted(dict.iteritems(),key=operator.itemgetter(1),reverse=True)#运行代码
>>> print Countlabels_max
[('C', 3), ('A', 2), ('B', 1)]
>>> Countlabels_max[0][0]#返回第0个tuple的第0个参数,也就是我最终的结果
'C' #目标label
>>> print dict
{'A': 2, 'C': 3, 'B': 1}#sorted函数不改变原来的dict,这也正是它与sort()的区别所在
暂时先用到这些,以后再进行补充