gpt4 book ai didi

clojure - 如何合并 map 并获得列表 map ?

转载 作者:行者123 更新时间:2023-12-05 08:42:51 24 4
gpt4 key购买 nike

假设我们有一个 map 列表。 map 都有相同的关键字,但我们事先不知道关键字。

[{:a 1 :b 2} {:a 3 :b 4}]

将这个列表合并到这样一个 map 中的惯用方式是什么:

{:a [1 3]
:b [2 4]}

看起来并不难,但是当我开始实现该功能时,它变得 super 丑陋和重复。我觉得有更简洁的方法可以实现这一目标。

谢谢

最佳答案

您实际上可以通过使用标准库中的几个函数来获得一个非常优雅的解决方案:

(defn consolidate [& ms]
(apply merge-with conj (zipmap (mapcat keys ms) (repeat [])) ms))

例子:

(consolidate {:a 1 :b 2} {:a 3 :b 4})
;=> {:a [1 3], :b [2 4]}

此解决方案的一个很酷的地方是,即使 map 具有不同的键集,它也能正常工作。

关于clojure - 如何合并 map 并获得列表 map ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37668251/

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