gpt4 book ai didi

clojure - 使用 clojure 将映射惯用地合并到值集映射中

转载 作者:行者123 更新时间:2023-12-02 23:24:49 25 4
gpt4 key购买 nike

我正在尝试使用 clojure 将多个映射惯用地合并为一个映射。

输入

{:a 1 :b "a"}
{:a 2 :b "b"}
{:a 3 :b "c"}
{:a 4 :b "a"}

预计

{:a #{1,2,3,4}, :b #{"a" "b" "c"}} 

每个键的值都会转换为原始映射中的一组值。

最佳答案

我会使用merge-with,使用包含空集的预构建结构:

(def data [{:a 1 :b "a"}
{:a 2 :b "b"}
{:a 3 :b "c"}
{:a 4 :b "a"}])

(let [base {:a #{} :b #{}}]
(apply merge-with conj base data))

=> {:a #{1 2 3 4}, :b #{"a" "b" "c"}}

在 basemap 中使用空集的技巧是让 conj 有一个具体的对象可以处理,因此可以正确工作。

关于clojure - 使用 clojure 将映射惯用地合并到值集映射中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11225562/

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