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

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

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

    但行好事 莫问前程
  • 相关阅读:
    1061. 判断题(15)
    1031. 查验身份证(15)
    1006. 换个格式输出整数 (15)
    1046. 划拳(15)
    1001. 害死人不偿命的(3n+1)猜想 (15)
    1021. 个位数统计 (15)
    1054. 求平均值 (20)
    写出这个数 (20)
    设计模式之中介者模式
    kill命令
  • 原文地址:https://www.cnblogs.com/haifwu/p/15167950.html
Copyright © 2020-2023  润新知