利用佇列來實現,可以滿足任意多個字段,任意公升序和降序的排序的場景,比如「按照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來排,...