收集多个最大值

弗洛里斯·德弗赖恩特

我有一个元素列表。每个元素的结构如下:

('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))

但是,这只会返回一个元素。我想要的是所有最大要素。我曾尝试使用collect和进行一些组合maximize,但是我对语法的了解很少。有没有办法在“简单”功能中收集所有最高元素?

感动

您可以loop通过一次遍历列表来选择具有正确的第一个元素的所有子列表并确定最大值(可以into用来loop累积多个值)来做到这一点,然后loopfinally子句中进行第二遍选择,现在仅选择得分最高的人:

(loop for triple in *l*
      for (key nil score) = triple
      when (eq key 'object1)
        collect triple into selection
        and maximize score into max-score
      finally (return (loop for triple in selection
                            when (eql (third triple) max-score)
                              collect triple)))

编辑:或者,代替第二个循环,该delete函数可以在这里非常简洁地使用:

(loop for triple in *l*
      for (key name score) = triple
      when (eq key 'object1)
        collect triple into selection
        and maximize score into max-score
      finally (return (delete max-score selection
                              :test #'/=
                              :key #'third)))

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

PHP从数组获取多个最大值

来自分类Dev

如何在Gnuplot中打印多个功能的最大值

来自分类Dev

MSSQL通过ID从多个列中获取最大值

来自分类Dev

SQL中有多个最大值

来自分类Dev

查找移动窗口的向量的多个最大值

来自分类Dev

如何找到多个栅格的像素方向最大值?

来自分类Dev

选择多个最大值

来自分类Dev

Laravel收集组的最大值

来自分类Dev

您如何求和多个组的单个最大值?

来自分类Dev

熊猫-df.max(),多个最大值

来自分类Dev

在多个DataFrames Python中查找数字的最大值

来自分类Dev

从熊猫中的多个对象获取最大值.max()

来自分类Dev

基于多个条件计算表中子范围的最大值

来自分类Dev

如何从字典中获取多个最大值

来自分类Dev

从多个表中选择id的最大值

来自分类Dev

熊猫-获得多个最大值

来自分类Dev

如何在SQL中找到具有多个最大值的组的最大值?

来自分类Dev

收集多个最大值

来自分类Dev

从值数组中获取多个最大值

来自分类Dev

PHP从数组获取多个最大值

来自分类Dev

难以从多个表中找到最大值

来自分类Dev

查找移动窗口的向量的多个最大值

来自分类Dev

MATLAB多个最大值

来自分类Dev

联接表中的多个最大值

来自分类Dev

C:将多个区域读入数组并找到最大值

来自分类Dev

SQL查询从多个列返回最大值

来自分类Dev

在具有多个条件的向量中返回最大值

来自分类Dev

查找表格中的多个最大值

来自分类Dev

SAS:保留多个可能值中的最大值