Python学习之sorted

今天碰到一个函数,如下:
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的时候觉得简单,没有写笔记的想法,后来看的例子多了,发现比较容易忘,特此写下自己的一些记录!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值