如何将表进行排序
( (("建设单位" "镇江金顺有限公司" <图元名: -16add0>)("图号" "NO.02" <图元名: -16ade8>) )(("建设单位" "镇江金顺有限公司" <图元名: -16add0>)("图号" "NO.04" <图元名: -16ade8>) )
(("建设单位" "镇江金顺有限公司" <图元名: -16add0>)("图号" "NO.01" <图元名: -16ade8>) )
(("建设单位" "镇江金顺有限公司" <图元名: -16add0>)("图号" "NO.02" <图元名: -16ade8>) )
(("建设单位" "镇江金顺有限公司" <图元名: -16add0>)("图号" "NO.03" <图元名: -16ade8>) ))
如何将图中的四个表按照“图号”的正常顺序01、02、03、04排序成如下:
( (("建设单位" "镇江金顺有限公司" <图元名: -16add0>)("图号" "NO.01" <图元名: -16ade8>) )
(("建设单位" "镇江金顺有限公司" <图元名: -16add0>)("图号" "NO.02" <图元名: -16ade8>) )
(("建设单位" "镇江金顺有限公司" <图元名: -16add0>)("图号" "NO.02" <图元名: -16ade8>) )
(("建设单位" "镇江金顺有限公司" <图元名: -16add0>)("图号" "NO.03" <图元名: -16ade8>) )
(("建设单位" "镇江金顺有限公司" <图元名: -16add0>)("图号" "NO.04" <图元名: -16ade8>) ))
(setq thlb '((("建设单位" "镇江金顺有限公司" <图元名: -16add0>)("图号" "NO.02" <图元名: -16ade8>) )
(("建设单位" "镇江金顺有限公司" <图元名: -16add0>)("图号" "NO.04" <图元名: -16ade8>) )
(("建设单位" "镇江金顺有限公司" <图元名: -16add0>)("图号" "NO.01" <图元名: -16ade8>) )
(("建设单位" "镇江金顺有限公司" <图元名: -16add0>)("图号" "NO.02" <图元名: -16ade8>) )
(("建设单位" "镇江金顺有限公司" <图元名: -16add0>)("图号" "NO.03" <图元名: -16ade8>) )
)
)
(setq thlb (vl-sort thlb '(lambda(x y)
(< (atof (vl-string-subst "" "NO." (cadr (cadr x))))
(atof (vl-string-subst "" "NO." (cadr (cadr y))))
)
)
)
)
(setq a'((("建设单位" "镇江金顺有限公司" <图元名: -16add0>)
("图号" "NO.02" <图元名: -16ade8>)
)
(("建设单位" "镇江金顺有限公司" <图元名: -16add0>)
("图号" "NO.04" <图元名: -16ade8>)
)
(("建设单位" "镇江金顺有限公司" <图元名: -16add0>)
("图号" "NO.01" <图元名: -16ade8>)
)
(("建设单位" "镇江金顺有限公司" <图元名: -16add0>)
("图号" "NO.02" <图元名: -16ade8>)
)
(("建设单位" "镇江金顺有限公司" <图元名: -16add0>)
("图号" "NO.03" <图元名: -16ade8>)
)
)
)
(setq bb (vl-sort a
'(lambda (a1 a2)
(<(atof (substr (cadadr a1) 5))
(atof (substr (cadadr a2) 5))
)
)
)
);排序
;排序后的结果
((("建设单位" "镇江金顺有限公司" <图元名: -16ADD0>) ("图号" "NO.01" <图元名: -16ADE8>))
(("建设单位" "镇江金顺有限公司" <图元名: -16ADD0>) ("图号" "NO.02" <图元名: -16ADE8>))
(("建设单位" "镇江金顺有限公司" <图元名: -16ADD0>) ("图号" "NO.02" <图元名: -16ADE8>))
(("建设单位" "镇江金顺有限公司" <图元名: -16ADD0>) ("图号" "NO.03" <图元名: -16ADE8>))
(("建设单位" "镇江金顺有限公司" <图元名: -16ADD0>) ("图号" "NO.04" <图元名: -16ADE8>))
)
我也来个:
(defun c:tt()
(setqa '(
(("建设单位" "镇江金顺有限公司" <图元名: -16add0>) ("图号" "NO.02" <图元名: -16ade8>))
(("建设单位" "镇江金顺有限公司" <图元名: -16add0>) ("图号" "NO.04" <图元名: -16ade8>))
(("建设单位" "镇江金顺有限公司" <图元名: -16add0>) ("图号" "NO.01" <图元名: -16ade8>))
(("建设单位" "镇江金顺有限公司" <图元名: -16add0>) ("图号" "NO.02" <图元名: -16ade8>))
(("建设单位" "镇江金顺有限公司" <图元名: -16add0>) ("图号" "NO.03" <图元名: -16ade8>))
)
c nil
)
(setq b (vl-sort-i a (function (lambda (x y) (< (cadadr x) (cadadr y))))))
(foreach i b (setq c (append c (list (nth i a)))))
)
果然高手众多,谢谢 (vl-sort lst '(lambda (x y) (< (cadadr x) (cadadr y)))) 琴剑江山_10184 发表于 2015-10-28 21:50 static/image/common/back.gif
请问重复的怎么删除呢? 重复的怎么删除呢,是什么函数呢
页:
[1]