列表排序使用方法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)]
网友评论