Sujet : Re: How to improve my summarizing code
De : No_spamming (at) *nospam* noWhere_7073.org (B. Pym)
Groupes : comp.lang.lispDate : 25. Jun 2024, 07:56:39
Autres entêtes
Organisation : A noiseless patient Spider
Message-ID : <v5dpn6$1elf9$1@dont-email.me>
References : 1
User-Agent : XanaNews/1.18.1.6
On 6/23/2024, B. Pym wrote:
(defun summarize (list)
(loop with summary = nil
for elt in list
for sum = (find (first elt) summary :test #'eql :key #'first)
if sum do (incf (second sum) (second elt))
else do (push elt summary)
finally (return summary)))
CL-USER 2 > (summarize '((c 7) (a 1) (a 3) (b 1) (b 10) (b 100)))
((B 111) (A 4) (C 7))
(define (summarize alist)
(let1 keys (delete-duplicates (map car alist))
(map
(lambda(k)
(list k
(apply +
(filter-map
(lambda(x) (and (equal? k (car x)) (cadr x)))
alist))))
keys)))
(summarize '((c 7) (a 1) (a 3) (b 1) (b 10) (b 100)))
===>
((c 7) (a 4) (b 111))