对lisp中的子列表进行排序

时间:2016-12-07 08:54:16

标签: list sorting lisp common-lisp sublist

我正在尝试使用每个子列表的第三个元素对以下列表中的元素进行排序:

    ((v 1 a) (v 3 d) (v 6 b) (v 2 c))

所以结果应该是:

    ((v 1 a) (v 6 b) (v 2 c) (v 3 d))

我尝试过这样的事情:

    (sort (copy-seq my-list) #'> :key (lambda (x) (third (car x))) )

但它确实不起作用,我不知道该怎么做。

1 个答案:

答案 0 :(得分:4)

CL-USER 15 > (sort (copy-seq '((v 1 a) (v 3 d) (v 6 b) (v 2 c)))
                   #'string<
                   :key #'third)
((V 1 A) (V 6 B) (V 2 C) (V 3 D))