Python——sorted自定义对一维二维数组排序

list = sorted(iterable, key=None, reverse=False)  

iterable 表示指定的序列,key 参数可以自定义排序规则;reverse 参数指定以升序(False,默认)进行排序。

一维数组

arr = ['15:30', '16:30', '10:00', '8:00', '9:00', '13:30', '14:30', '11:00']
# 使用lamda自定义规则进行排序
sort_arr = sorted(arr, key=lambda x: int(x.split(':')[0]*60)+int(x.split(':')[1]))
print(sort_arr)

 输出

['8:00', '9:00', '10:00', '11:00', '13:30', '14:30', '15:30', '16:30']

  

二维数组

weekday = ['星期一', '星期二', '星期三', '星期四', '星期五']
arr = [['星期一', '8:00', '8:45', '语文'], ['星期二', '10:00', '10:45', '生物'],
       ['星期二', '11:00', '11:45', '化学'], ['星期五', '11:00', '11:45', '化学'],
       ['星期一', '9:00', '9:45', '数学'], ['星期一', '10:00', '10:45', '英语'],
       ['星期一', '11:00', '11:45', '化学'], ['星期三', '13:30', '14:15', '语文'],
       ['星期四', '10:00', '10:45', '物理'], ['星期三', '8:00', '8:45', '物理'],
       ['星期三', '9:00', '9:45', '生物'], ['星期三', '10:00', '10:45', '英语']]

# 排序 一维按照weekday index升序,二维将数据转换为数字如 8:00 => 8*60+00=480 后再升序排序)
arr_sort = sorted(arr, key=lambda x: (weekday.index(x[0]), int(x[1].split(':')[0])*60+int(x[1].split(':')[1])))
for val in arr_sort:
    print(val)

输出 : 一维按照weekday index升序,二维将数据转换为数字如 8:00 => 8*60+00=480 后再升序排序

['星期一', '8:00', '8:45', '语文']
['星期一', '9:00', '9:45', '数学']
['星期一', '10:00', '10:45', '英语']
['星期一', '11:00', '11:45', '化学']
['星期二', '10:00', '10:45', '生物']
['星期二', '11:00', '11:45', '化学']
['星期三', '8:00', '8:45', '物理']
['星期三', '9:00', '9:45', '生物']
['星期三', '10:00', '10:45', '英语']
['星期三', '13:30', '14:15', '语文']
['星期四', '10:00', '10:45', '物理']
['星期五', '11:00', '11:45', '化学']

 

posted @ 2022-10-25 10:07  yx啦啦啦  阅读(193)  评论(0编辑  收藏  举报
……