- (defun tt(lst / rtn a b)
- (while lst
- (setq a (car lst)
- )
- (setq b nil)
- (foreach x lst
- (if (eq (car a) (car x))
- (setq b (cons (cdr x) b))
- )
- )
- (setq b (reverse b))
- (setq b (apply 'mapcar (cons '+ b)))
- (setq rtn (cons (cons (car a) b) rtn))
- (setq lst (vl-remove-if '(lambda (x) (= (car a) (car x))) lst))
- )
- (reverse rtn)
- )
- ;;;测试 (setq lst '(("a" 2) ( "b" 4) ("a" 5) ("c" 6) ("d" 9) ("c" 1) ("b" 4) ("r" 3) ("r" 3) ("a" 5) ))
- ;;; (tt lst) 返回:'(("a" 12) ("b" 8) ("c" 7) ("d" 9) ("r" 6))
|