每天写500字每天写1000字

python 15:列表排序

2019-11-15  本文已影响0人  金石明镜

列表排序使用方法sort()。

可以指定排序键和是否倒序的参数。默认按原值排序,且为正序。

一、按原值排序

>>> s=[1,2,-1,-3,7,-9]

>>> s

[1, 2, -1, -3, 7, -9]

>>> s.sort()

>>> s

[-9, -3, -1, 1, 2, 7]

>>> s.sort(reverse=True)

>>> s

[7, 2, 1, -1, -3, -9]

二、指定排序键对列表排序

排序键是一个函数。

下面按绝对值排序。

先导入math模块,以便使用绝对值函数。

>>> import math

>>> s.sort(key=lambda x:abs(x))

>>> s

[1, -1, 2, -3, 7, -9]

>>> s.sort(key=lambda x:abs(x), reverse=True)

>>> s

[-9, 7, -3, 2, 1, -1]

下面的例子中,列表的元素是字典。

>>> li=[{"age":20,"name":"def"},{"age":25,"name":"abc"},{"age":10,"name":"ghi"}]

>>> li=sorted(li, key=lambda x:x["age"])

>>> print(li)

[{'age': 10, 'name': 'ghi'}, {'age': 20, 'name': 'def'}, {'age': 25, 'name': 'abc'}]

>>> li=sorted(li, key=lambda x:x['name'])

>>> li

[{'age': 25, 'name': 'abc'}, {'age': 20, 'name': 'def'}, {'age': 10, 'name': 'ghi'}]

三、对字典排序

字典是不能直接排序的,因为只有列表可以排序,因此,只能先转化为列表。

>>>d={'beautiful': 10, 'wonderful': 12, 'love': 17}

>>>content=list(d.items())

>>> content

[('beautiful', 10), ('wonderful', 12), ('love', 17)]

>>> content.sort(key=lambda x:x[0])

>>> content

[('beautiful', 10), ('love', 17), ('wonderful', 12)]

>>> content.sort(key=lambda x:x[1])

>>> content

[('beautiful', 10), ('wonderful', 12), ('love', 17)]

四、排序键为自定义函数

前面举出的排序键为lambda函数。也可以用自定义函数。

先建立一个函数,并运行:

import math

def func(x):

  return x[1]%3

再执行下面的命令:

>>>d={'beautiful': 10, 'wonderful': 12, 'love': 17}

>>>content=list(d.items())

>>> content.sort(key=func)

>>> content

[('wonderful', 12), ('beautiful', 10), ('love', 17)]

>>> content.sort(key=func,reverse=True)

>>> content

[('love', 17), ('beautiful', 10), ('wonderful', 12)]

上一篇 下一篇

猜你喜欢

热点阅读