【问题标题】:Common Lisp return associations from alist as new listCommon Lisp 从 alist 返回关联作为新列表
【发布时间】:2013-01-18 21:19:10
【问题描述】:

我有一个关联列表如下:

(defparameter *experts2*
  `(
    ;; direction
    (:direction . ( (nn-direction-expert (process-signal) :number-of-neighbors 10)
                    (fn-direction-expert (process-signal) :number-of-neighbors 10) ))



    ;; evaluation
    (:evaluation . ( 

                    ;(avoid-line-crossing-evaluation-expert (process-signal))
                    (nn-single-evaluation-expert (candidate-point))
                    (fn-single-evaluation-expert (candidate-point))
                    ;(nn-all-evaluation-expert (ranking))
                    ))

    ;; coordination
    (:coordination . (
                      ;(ranking-process (candidate-point))
                      (action-process (candidate-point ranking))))))

我正在寻找一种方法,从 key=>value 列表中提取值并将它们放入一个新列表中,例如

(defparameter *experts*
  `(
    ;; direction
    (nn-direction-expert (process-signal) :number-of-neighbors 10)
    (fn-direction-expert (process-signal) :number-of-neighbors 10)

    ;eher als evaluationsexperte
    ;(avoid-line-crossing-evaluation-expert (process-signal) )

    ;; evaluation
    (nn-single-evaluation-expert (candidate-point))
    (fn-single-evaluation-expert (candidate-point))
    ;(nn-all-evaluation-expert (ranking))

    ;; coordination
    ;(ranking-process (candidate-point))
    (action-process (candidate-point ranking))
    ))

有什么建议吗?感谢您的帮助。

问候

【问题讨论】:

    标签: list lisp common-lisp key-value-store


    【解决方案1】:

    这似乎产生了你想要的答案,但看起来不是很漂亮:

    (mapcan #'copy-list (mapcar #'cdr *experts2*))
    

    【讨论】:

    • 这有帮助。非常感谢!
    【解决方案2】:

    Samuel Edwin Ward 的答案有效,但这是另一个(现在已编辑以实际执行您需要的操作)。因此,您希望对于*experts2* 的每个元素,取其cdr,然后从返回的列表中取值并将它们组合成一个列表:

    (apply #'append (mapcan #'cdr *experts2*))
    

    【讨论】:

    • 这是第一次。我什至在回答的过程中亲自尝试过。但这里可能阴险的事情是它改变了*experts2*。这可能与“新列表”的请求不一致。这可能是在某些情况下使用的最佳方法,但它的缺点绝对值得一提。
    • 啊,该死。我忘了mapcan 是破坏性的。我想到了一种我认为比您的答案更直接的方法,但不一定更好。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多