急急如律令,天灵灵,地灵灵,快来大神显神通,求助求助!   
 - ;;假设 lst=(("a" . "11") ("a" . "22") (b" . "11") ("b" . "11") ("c" . "121") ("c" . "22") ("d" . "22") ("d" . "122"))
- ;;以下代码目的是:历遍lst 如果有相同的名称(如“a”等)就累加该名称后的数字,最后输出为:a 累加后的和 ; b 累加后
- ;的和,以此类推
- ;;代码总是错误请大神帮忙修改,错误出在哪里,先谢了!
- (while lst
- (setq n 0)
- (foreach i lst(if (= (caar lst) (car i))(setq n (+ n (cdr i)))))
- (setq newlst (append newlst (list (cons (caar lst) n))))
- (setq lst(vl-remove-if '(lambda (x) (= (caar lst) (car x))) lst))
- )
- (setq newlst (vl-sort newlst (function(lambda (x y) (< (car x) (car y))))))
- (setq x2 (getpoint "\n起始位置:"))
- (setq x3 (polar x2 0 12))
- (command "text" "c" x2 "2" "0" "种类")
- (command "text" "c" x3 "2" "0" "数量")
- (foreach x newlst
- (setq x2(polar x2 (/ pi -2) 3))
- (setq x3 (polar x2 0 12))
- (command "text" "c" x2 "1.5" "0" (car x))
- (command "text" "c" x3 "1.5" "0" (cdr x))
- )
|