python二维列表排序 Python 列表排序 sort 与 sorted 详解

博客:

一、介绍及简单使用

sort 与 sorted 是 Python 内置的列表排序函数

sort

使用list.sort()会将 list 进行升序排序,返回NoneTypepython二维列表排序,影响 list 本身,如

In [8]: li=[1,5,3,2]

In [9]: li.sort()

In [10]: li
Out[10]: [1235]

In [11]: type(li.sort())
Out[11]: NoneType

sorted

使用sorted(list)会将 list 进行升序排序,返回list,不影响 list 本身,如

In [12]: li=[1,5,3,2]

In [13]: sorted(li)
Out[13]: [1235]

In [14]: type(sorted(li))
Out[14]: list

In [15]: li
Out[15]: [1532]

二、使用进阶

上面简单介绍了对列表的简单排序,那么,如果列表中嵌套了列表或者是字典呢?

嵌套型列表如何进行排序?

sort 与 sorted 中都含有一个参数key,用于自定义参数排序。

key参数接收的是一个函数,函数的接收参数是列表中的各个值,利用函数的返回值的 ASCII 码进行排序。

若嫌弃定义函数麻烦可以使用 lambda 匿名函数,复杂函数推荐,例子如下:

列表嵌套列表

In [30]: l1=[1,3]

In [31]: l2=[2,5]

In [32]: l3=[3,4]

In [33]: ll=[l1,l2,l3]

In [34]: ll
Out[34]: [[1, 3], [2, 5], [3, 4]]

# 定义一个返回列表最后一个元素的函数
In [35]: def a(l):
    ...:     return l[-1]
    ...:

# 根据嵌套列表的最后一个元素进行升序排序
In [36]: sorted(ll,key=a)
Out[36]: [[1, 3], [3, 4], [2, 5]]

In [37]: ll.sort(key=a)

In [38]: ll
Out[38]: [[1, 3], [3, 4], [2, 5]]

# 使用 lambda 根据嵌套列表的首个元素进行升序排序
In [39]: sorted(ll,key=lambda s: s[0])
Out[39]: [[1, 3], [2, 5], [3, 4]]

# 直接使用 Python 内建函数 len ,根据列表字符串长度进行升序排序
In [40]: sorted(['aaa','b','cc'],key=len)
Out[40]: ['b''cc''aaa']

嵌套字典

In [46]: d1={'a':1,'b':2}

In [47]: d2={'a':11,'b':1}

In [48]: d3={'a':10,'b':3}

In [49]: ld=[d1,d2,d3]

In [50]: ld
Out[50]: [{'a'1'b'2}, {'a'11'b'1}, {'a'10'b'3}]

In [51]: def get_b(d):
    ...:     return d.get('b')
    ...:

In [52]: sorted(ld,key=get_b)
Out[52]: [{'a'11'b'1}, {'a'1'b'2}, {'a'10'b'3}]

...

更多使用

其余更复杂的使用不外乎 key 接收的函数更多的定义python二维列表排序,此处不再列举

▼点击成为社区注册会员 喜欢文章,点个在看

———END———
限 时 特 惠:本站每日持续更新海量各大内部创业教程,一年会员只需128元,全站资源免费下载点击查看详情
站 长 微 信:jiumai99

滚动至顶部