1. 描述
Python给定的sort函数是针对一维数组的,那么那么怎么自定义降序排序?
那数据是二维度的时候怎么处理,比如说,给你一个二位数组:
[[30, 50], [12, 2], [3, 4], [12, 15]]
需要按照第一维度升序排序,若第一维度相同,第二维度降序排序,怎么实现了。
无需担心,下面已经给你实现好了。
2. Code实现
1 #!/usr/bin/env python
2 # _*_ coding: utf-8 _*_
3 # @Time : 2021/8/20 19:16
4 # @Author : hfw
5 # @Version:V 0.1
6 # @File : my_sort.py
7 # @desc : 自定义排序(一维二维)
8 import functools
9
10
11 class Solution:
12 # 一维排序
13 def one_dim(self, x, y):
14 # x - y > 0: 降序排序
15 return y - x
16
17 # 二位排序
18 # 第一维度升序排序
19 # 第二维度:若第一维度相等,第二维度降序排序
20 def two_dim(self, x, y):
21 if x[0] != y[0]:
22 return x[0] - y[0]
23 else:
24 return y[1] - x[1]
25
26 def my_sort(self, nums, dim = 1):
27 if dim == 1:
28 nums.sort(key=functools.cmp_to_key(self.one_dim))
29 elif dim == 2:
30 nums.sort(key=functools.cmp_to_key(self.two_dim))
31 return nums
32
33
34 if __name__ == ‘__main__‘:
35 # 一维数据
36 nums = [5, 4, 6, 7, 3, 2, 2, 5, 9, 8, 1]
37 print(Solution().my_sort(nums, dim=1))
38 nums = [[30, 50], [12, 2], [3, 4], [12, 15]]
39 print(Solution().my_sort(nums, dim=2))
运行结果:
[1, 2, 2, 3, 4, 5, 5, 6, 7, 8, 9]
[[3, 4], [12, 15], [12, 2], [30, 50]]
3. 结语
努力去爱周围的每一个人,付出,不一定有收获,但是不付出就一定没有收获! 给街头卖艺的人零钱,不和深夜还在摆摊的小贩讨价还价。愿我的博客对你有所帮助(*^▽^*)(*^▽^*)!
如果客官喜欢小生的园子,记得关注小生哟,小生会持续更新(#^.^#)(#^.^#)。