明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 890|回复: 2

[提问] 表排序

[复制链接]
发表于 2022-3-17 16:49:49 | 显示全部楼层 |阅读模式
各位大神们,帮忙看看这个怎么处理
((<图元名: 7fffeec0b70> "A-1-1") (<图元名: 7fffeec0b80> "A-1-2") (<图元名: 7fffeec0b90> "A-2-1") (<图元名: 7fffeec0ba0> "A-2-2") (<图元名: 7fffeec0bb0> "A-2-3") (<图元名: 7fffe8806e0> "A-1-3"))
表排序,表如上,处理方式("A-1-1")根据中间的数从大到小排序的同时根据最后的数从小到大排序。
换句话说就是:整个列表根据中间数从大到小排序,如果中间数相同的局部则根据最后一个数从小到大排序
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2022-3-17 17:30:55 | 显示全部楼层
  1. (setq lst '(("m" "A-2-1")("m" "A-1-1")("m" "A-2-2")("m" "A-1-2")("m" "A-1-3")("m" "A-2-3")))
  2. (vl-sort
  3. lst
  4. '(lambda (x y)
  5.     (or (> (atoi (cadr (string:to-list (cadr x)"-")))
  6.            (atoi (cadr (string:to-list (cadr y)"-"))))
  7.         (and (= (atoi (cadr (string:to-list (cadr x)"-")))
  8.                 (atoi (cadr (string:to-list (cadr y)"-"))))
  9.              (< (atoi (caddr (string:to-list (cadr x)"-")))
  10.                 (atoi (caddr (string:to-list (cadr y)"-"))))))))

函数 string:to-list 源码在 http://atlisp.cn/function/string:to-list

评分

参与人数 1明经币 +1 收起 理由
845245015 + 1 很给力!

查看全部评分

发表于 2022-3-18 00:33:04 | 显示全部楼层
本帖最后由 xyp1964 于 2022-3-18 00:34 编辑

(setq lst'(("a" "A-1-1")("b" "A-1-2")("c" "A-2-1")("d" "A-2-2")("e" "A-2-3")("f" "A-1-3")))
(vl-sort lst'(lambda(x y)(setq a(xyp-StrSpr(cadr x)"-")b(xyp-StrSpr(cadr y)"-"))
            (cond ((and(=(distof(cadr a))(distof(cadr b)))(<(distof(caddr a))(distof(caddr b))))t)
                  ((>(distof(cadr a))(distof(cadr b)))t)
            )
          )
)

(("c" "A-2-1") ("d" "A-2-2") ("e" "A-2-3") ("a" "A-1-1") ("b" "A-1-2") ("f" "A-1-3"))

评分

参与人数 1明经币 +1 收起 理由
845245015 + 1 很给力!

查看全部评分

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-15 01:18 , Processed in 0.394199 second(s), 30 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表