要素のリストがあります。各要素は次のように構成されています。
('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)
リストの最上位の要素を 1 つ取得することもできます。
(loop for element in list
when (equal 'object1 (first element))
maximize (third element))
ただし、これは 1 つの要素のみを返します。私が欲しいのは、すべての最大の要素です。collect
との組み合わせをいくつか試しましmaximize
たが、構文に関する知識はほとんどありません。「単純な」関数ですべての最高の要素を収集する方法はありますか?