我有一份这种表格的清单:
testlist((a 22) ( b 2) ( c 5))
我的目标是根据数字的值(5个第一个最大值)对测试列表进行排序。有没有办法实现这一点,而无需迭代列表并相互比较数字?
答案 0 :(得分:4)
在ANSI Common Lisp中:
(sort (copy-list '((a 22) (b 2) (c 5))) #'< :key #'second)
-> ((B 2) (C 5) (A 22))
copy-list
就在那里,因为sort
会破坏输入列表。我们需要这个,因为我们的输入列表是一个文字,但即使它不是,有时你不想加扰你想要排序的原始对象。