gpt4 book ai didi

functional-programming - 如何在 Scheme/Lisp 中添加结构的元素

转载 作者:太空宇宙 更新时间:2023-11-03 18:46:33 25 4
gpt4 key购买 nike

我有一个这种形式的输入:

(((lady-in-water . 1.25)
(snake . 1.75)
(run . 2.25)
(just-my-luck . 1.5))
((lady-in-water . 0.8235294117647058)
(snake . 0.5882352941176471)
(just-my-luck . 0.8235294117647058))
((lady-in-water . 0.8888888888888888)
(snake . 1.5555555555555554)
(just-my-luck . 1.3333333333333333)))

(上下文:单词表示电影,数字表示用户提交的加权评分)

我需要添加所有数量并返回一个看起来像这样的列表

((lady-in-water 2.5)
(snake 2.5)
(run 2.25)
(just-myluck 2.6))

如何遍历列表和所有数量?我真的很难过。请帮助我。

谢谢。

最佳答案

我的做法和上面怀远的差不多,但是我更喜欢用dolist来循环:

(defun parse-ratings (all-ratings)
(let ((hash (make-hash-table)))
(dolist (rating-list all-ratings)
(dolist (rating rating-list)
(incf (gethash (car rating) hash 0)
(cdr rating))))
(maphash (lambda (key value)
(format t "total for ~a: ~a~%" key value))
hash)))

结果如下:

CL-USER> (parse-ratings '(((lady-in-water . 1.25) (snake . 1.75) 
(run . 2.25) (just-my-luck . 1.5))
((lady-in-water . 0.8235294117647058)
(snake . 0.5882352941176471)
(just-my-luck . 0.8235294117647058))
((lady-in-water . 0.8888888888888888)
(snake . 1.5555555555555554)
(just-my-luck . 1.3333333333333333))))
total for LADY-IN-WATER: 2.9624183
total for SNAKE: 3.893791
total for RUN: 2.25
total for JUST-MY-LUCK: 3.6568627
NIL
CL-USER>

关于functional-programming - 如何在 Scheme/Lisp 中添加结构的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1114646/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com