python学习 -- operator.itemgetter(), list.sort/sorted 以及lambda函数

Posted 老张哈哈哈

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python学习 -- operator.itemgetter(), list.sort/sorted 以及lambda函数相关的知识,希望对你有一定的参考价值。

Python 中有非常方便高效的排序函数,下面主要介绍如何sort/sorted对list,dict进行排序。

1. 用list.sort /sorted 对list of tuples中第二个值进行排序

>>> import operator
>>> a=[(‘a‘,3),(‘b‘,2),(‘c‘,1)]
>>> import operator
>>> l=[(‘a‘,3),(‘b‘,2),(‘c‘,1)]
>>> l.sort(key=operator.itemgetter(1))
>>> l
[(‘c‘, 1), (‘b‘, 2), (‘a‘, 3)]
>>> sorted(l, key=operator.itemgetter(1))
[(‘c‘, 1), (‘b‘, 2), (‘a‘, 3)]
>>> sorted(l, key=operator.itemgetter(0))
[(‘a‘, 3), (‘b‘, 2), (‘c‘, 1)]

  list.sort 和sorted 的区别:sort是list序列的一个方法,而sorted是内建函数

  list.sort: 没有返回值,而且 sort作为序列的内部函数,调用完后会对调用的序列进行排序

  sorted:函数不改变参数,并返回排好序的序列副本

  在python开发文档中对sort和sorted都有详细介绍,也可以调用help函数来查看两者的区别

>>> help(list.sort)
Help on method_descriptor:

sort(...)
    L.sort(key=None, reverse=False) -> None -- stable sort *IN PLACE*
>>> 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.

 

2. 除了用operator之外我们也可以用lambda

>>> l.sort(key=lambda x:x[1])
>>> l
[(c, 1), (b, 2), (a, 3)]

 

3. 用sorted来对ditionary进行排序

>>> l = {‘a‘: 3,"b": 2,"c": 1}
>>> sl_key = sorted(l.items())  #Sort by key
>>> sl_key
[(‘a‘, 3), (‘b‘, 2), (‘c‘, 1)]
>>> sl_value = sorted(l.items(),key=lambda x:x[1])  #Sort by value
>>> sl_value
[(‘c‘, 1), (‘b‘, 2), (‘a‘, 3)]
>>> sl_value = sorted(l.items(),key=lambda x:x[1], 
reverse=True)  #Sort by value Backwards
>>> sl_value
[(‘a‘, 3), (‘b‘, 2), (‘c‘, 1)]
>>> sl_value = sorted(l.items(),key=lambda x:(x[1],x[0]),
reverse=True)  #Sort by value then by Key
>>> sl_value
[(‘a‘, 3), (‘b‘, 2), (‘c‘, 1)]

  

以上是关于python学习 -- operator.itemgetter(), list.sort/sorted 以及lambda函数的主要内容,如果未能解决你的问题,请参考以下文章

Python学习教程(Python学习路线+Python学习视频):Python数据结构

Python 系统学习梳理_All

AI测试学习Python学习Python基础学习

AI测试学习Python学习Python基础学习

0基础该不该学习Python?适合学习吗?

怎么学习Python,学习Python需要那些学习条件?