2016-09-28 78 views
0

排序列表的名單上有這種形式的列表的列表:在口齒不清

testlist((a 22) (b 2) (c 5)) 

我的目標是基於排序上的數字值(5個第一最大值)testlist。有沒有辦法實現這一點,而不必迭代列表並相互比較數字?

回答

4

在ANSI Common Lisp的:

(sort (copy-list '((a 22) (b 2) (c 5))) #'< :key #'second) 
-> ((B 2) (C 5) (A 22)) 

copy-list有沒有因爲sort則會覆蓋輸入列表中。我們需要這樣做,因爲我們的輸入列表是一個文字,但即使不是,有時您也不想打亂您想要排序的原始對象。