今天碰到一个函数,如下:
sorted(classCount.iteritems(),key=operator.itemgetter(1),reverse=True)
python端输入help(sorted),输出如下:
Help on built-in function sorted in module builtins:
sorted(iterable, /, *, key=None, reverse=False)
Return a new list containing all items from the iterable in ascending order.
A custom key function can be supplied to customize the sort order, and the
reverse flag can be set to request the result in descending order.
函数参数类型:
iterable:可迭代类型
key: 用列表元素的某个属性或函数进行作为关键字,有默认值,迭代集合中的一项;
reverse:False升序;True降序
返回值:是一个经过排序的可迭代类型,与iterable一样。
上述例子中,参数分别调用了其他函数,第一个函数是iteritems(),iteritems()和items都是python字典的内建函数,items()方法是将字典以列表形式返回,举个例子:
>>> dic_test = {'one':1,'two':2,'three':3}
>>> mydic = dic_test.items()
>>> print(mydic)
dict_items([('one', 1), ('two', 2), ('three', 3)])
items输出是以列表返回,成员是元组。
iteritems()是python2下的用法,这里由于没有安装python2,运行上述程序会报错,所以需要找一个python3下的类似方法处理。
搜资料的过程中发现了一个python3的迭代方法,(暂时不确定能否取代iteritems)例子如下:
dic_test = {'one':1,'two':2,'three':3}
#mydic = dic_test.items()
test = iter(dic_test)
while True:
try:
x = next(test)
print(x)
except StopIteration:
break
上述例子中,通过iter和next同样能遍历。
注:try是异常处理的方法。
operator 是一个操作库,里面有很多c语言实现的功能,例如,operator.add(x,y)相当于x+y,这里只说一下operator.itemgetter,在终端输入help(operator.itemgetter),输出如下:
class itemgetter(builtins.object)
| itemgetter(item, ...) --> itemgetter object
|
| Return a callable object that fetches the given item(s) from its operand.
| After f = itemgetter(2), the call f(r) returns r[2].
| After g = itemgetter(2, 5, 3), the call g(r) returns (r[2], r[5], r[3])
|
| Methods defined here:
|
| __call__(self, /, *args, **kwargs)
| Call self as a function.
|
| __getattribute__(self, name, /)
| Return getattr(self, name).
|
| __new__(*args, **kwargs) from builtins.type
| Create and return a new object. See help(type) for accurate signature.
|
| __reduce__(...)
| Return state information for pickling
|
| __repr__(self, /)
| Return repr(self).
功能很简单,就是返回给定维的数据。举两个例子:
import operator
a = [[1,2],[3,4]]
b = operator.itemgetter(0)
print(b(a))
输出:([1,2])
按照上述help解释,给0输出了[1,2].
如果这样写:operator.itemgetter(0,1),输出:([1,2][3,4])
总结:
由于本人学过c语言,当初学python的时候觉得简单,没有写笔记的想法,后来看的例子多了,发现比较容易忘,特此写下自己的一些记录!