python基础:sort和sorted排序
记录下python中使用sort和sorted排序的方法
1、sort
sort只能针对列表(list)进行排序,并且是对原列表进行排序,改变原列表内容
>>> a = [5,6,1,2,0,8]
>>> a.sort()
>>> a
[0, 1, 2, 5, 6, 8]
>>>
默认为升序排序
指定reverse参数来进行降序排序
>>> a = [5,6,1,2,0,8]
>>> a.sort(reverse=True)
>>> a
[8, 6, 5, 2, 1, 0]
>>>
2、sorted
sorted函数可以对任何可迭代的对象进行排序,如列表、字典、字符串,它返回的是一个新的list,并不会修改原来的数据
>>> a = '321'
>>> sorted(a)
['1', '2', '3']
>>> b = [7,2,1,5]
>>> sorted(b)
[1, 2, 5, 7]
与sort一样,sorted也是默认升序排序,可以指定reverse进行降序
>>> m = [1,5,9,2]
>>> sorted(m, reverse=True)
[9, 5, 2, 1]
3、对复杂对象进行排序
在sort和sorted中使用key参数来指定排序规则,key一般指定一个函数
对于sort,如下
def sort_fun(e):
return e["count"]
data = [{"name": "a", "count": 8}, {"name": "c", "count": 2}, {"name": "b", "count": 30}]
data.sort(key=sort_fun)
print(data)
输出结果:
[{'name': 'c', 'count': 2}, {'name': 'a', 'count': 8}, {'name': 'b', 'count': 30}]
原始数据data是一个列表包裹字典的数据格式,按照每组元素中的count
大小排序
所以定义一个函数sort_fun
,它的入参是data列表中的每组字典,然后提取其中的count
值,根据count
值对列表进行排序
sorted与sort类似,如下
def sort_fun(e):
return e["count"]
data = [{"name": "a", "count": 8}, {"name": "c", "count": 2}, {"name": "b", "count": 30}]
sorted_data = sorted(data, key=sort_fun)
print(sorted_data)
输出结果:
[{'name': 'c', 'count': 2}, {'name': 'a', 'count': 8}, {'name': 'b', 'count': 30}]
一般当使用key参数时,更多的是结合lambda函数使用
data = [{"name": "a", "count": 8}, {"name": "c", "count": 2}, {"name": "b", "count": 30}]
sorted_data = sorted(data, key=lambda item: item["count"])
print(sorted_data)
输出结果:
[{'name': 'c', 'count': 2}, {'name': 'a', 'count': 8}, {'name': 'b', 'count': 30}]
>>> data1 = [{"name": "a", "count": 8}, {"name": "c", "count": 2}, {"name": "b", "count": 30}]
>>> data1.sort(key=lambda item: item["count"])
>>> data1
[{'name': 'c', 'count': 2}, {'name': 'a', 'count': 8}, {'name': 'b', 'count': 30}]