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}]

 

posted @ 2023-02-02 11:09  我是冰霜  阅读(419)  评论(0编辑  收藏  举报