【发布时间】:2013-10-14 04:04:30
【问题描述】:
我有一个元素列表。每个元素的结构如下:
('symbol "string" int-score)
示例列表:
(list (list 'object1 "wabadu" 0.5)
(list 'object2 "xezulu" 0.6)
(list 'object1 "yebasi" 0.5)
(list 'object1 "tesora" 0.2))
我想检索特定符号的最大值。当我用符号object2 搜索时,我应该会返回:
('object2 "xezulu" 0.6)
如果我用object1 搜索,我应该会返回:
(('object1 "wabadu" 0.5) ('object1 "yebasi" 0.5))
我想收集特定对象的所有最高元素。我能做的是:假设上面的列表是下面使用的列表,并且我正在搜索object1。我可以检索特定对象的所有元素:
(loop for element in list
when (equal 'object1 (first element))
collect element)
我还可以检索列表的最高元素:
(loop for element in list
when (equal 'object1 (first element))
maximize (third element))
但是,这只会返回一个元素。我想要的是 all 最大元素。我尝试了一些与collect 和maximize 的组合,但我对语法的了解很少。有没有办法在“简单”函数中收集所有最高元素?
【问题讨论】:
-
嗯...iterate 的第一个示例似乎是为了做您想做的事情...不过,我尝试了一下,但未能迭代以实际工作我,所以...暂时不将此视为答案。如果我弄明白了,我会发布一个;鼓励其他人打败我。
标签: loops lisp max common-lisp