Python 自定義排序(一維二維)
阿新 • • 發佈:2021-08-20
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. 結語
努力去愛周圍的每一個人,付出,不一定有收穫,但是不付出就一定沒有收穫! 給街頭賣藝的人零錢,不和深夜還在擺攤的小販討價還價。願我的部落格對你有所幫助(*^▽^*)(*^▽^*)!
如果客官喜歡小生的園子,記得關注小生喲,小生會持續更新(#^.^#)(#^.^#)。
但行好事 莫問前程