Python 自定义排序(一维二维)

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. 结语

  努力去爱周围的每一个人,付出,不一定有收获,但是不付出就一定没有收获! 给街头卖艺的人零钱,不和深夜还在摆摊的小贩讨价还价。愿我的博客对你有所帮助(*^▽^*)(*^▽^*)!

  如果客官喜欢小生的园子,记得关注小生哟,小生会持续更新(#^.^#)(#^.^#)。

 

Python 自定义排序(一维二维)

上一篇:IDEA创建Maven项目做Java Web时无WEB-INF/classes的问题


下一篇:js制作网页游戏-键盘控制人物移动