python多欄位,混合排序

2021-10-06 08:37:59 字數 1627 閱讀 3511

利用佇列來實現,可以滿足任意多個字段,任意公升序和降序的排序的場景,比如「按照a欄位公升序,b欄位降序,c欄位公升序」

[,,

]

asc公升序

desc降序

unsorted_list=

,'2':,

'3':

,'4':,

'5':

,'6':,

'7':

,'8':,

'9':

}

具體實現:

def

comprex_sort_index_list

(self,sort_feild_array,unsorted_list)

: sort_item_queue= queue.queue(

) sort_item_queue.put(unsorted_list)

for sort in sort_feild_array:

sort_item_queue_temp = queue.queue(

) sort_feild=sort.keys()[

0]is_reverse=

true

if sort[sort_feild]

=="desc"

else

false

while

not sort_item_queue.empty():

queue_item=sort_item_queue.get()if

isinstance

(queue_item,

dict):

queue_item =

tuple

(queue_item.items())

result_sort=

sorted

(queue_item,key=

lambda x:x[1]

[sort_feild]

,reverse=is_reverse)

sort_feild_value_dictinct=

sorted

(list

(set

(map

(lambda x:x[1]

[sort_feild]

,result_sort)))

,reverse=is_reverse)

for feild_value in sort_feild_value_dictinct:

sort_item_queue_temp.put(

filter

(lambda x:x[1]

[sort_feild]

==feild_value,result_sort)

) sort_item_queue=sort_item_queue_temp

sorted_list=

list()

while

not sort_item_queue.empty():

sorted_list=sorted_list+sort_item_queue.get(

)return sorted_list

linux sort 多欄位排序

linux多數發行版自帶的sort程式,非常強大,在此只說多字段排序 sort 有個引數 k,可以指定字段,有比較複雜的語法,不在文字範圍內。一下為一段資料 從基因中得到,僅僅作為demo 檔名為 data chr13 3008566 3008677 chr9 3024384 3024515 chr...

C vector多欄位排序

c 當中vector的資料型別是基本型別時,我們利用std sort很容易排序,當我們的型別是自定義的結構體,並且我們還要實現按多字段排序,我有兩種方法 1.我們通過過載operator方法來實現 本例子實現了struct中多個字段排序 cpp view plain copy include inc...

轉 多欄位排序

多欄位排序的問題其實很簡單,只要實現乙個自己的comparator就可以。例如我有乙個類 class student 然後我有乙個arraylist,新增了三個學生進去 public static void main string args 我的排序規則是,先按名字牌,如果名字一樣的,按照id來排,...