简体   繁体   English

Clojure合并哈希图中的键值

[英]Clojure merge key values in hash map

So I have the below hash map of k/v: 所以我有下面的k / v哈希图:

(def data [{:ID "0000010890" :CREDIT "EM 1"}

{:ID "0000010890" :CREDIT "FLOW 1"}

{:ID "0000010890" :CREDIT "EM 1"}

{:ID "0000010890" :CREDIT "FLOW 1"}

{:ID "0000010809" :CREDIT "FLOW 1"}])

which I need to merge in to this: 我需要合并到此:

[{:ID "0000010890" :CREDIT "EM 1, FLOW 1"}

{:ID "0000010809" :CREDIT "FLOW 1"}]

Can anyone advise the best way to go about this in clojure? 谁能建议在Clojure中进行此操作的最佳方法?

My attempt: 我的尝试:

(defn- create-issue-summary-2 [data]
            (->> data
                 (group-by :ID)
                 (map (fn [[k v]] (into {:ID k} (apply merge-with (map #(dissoc % :ID) v)))))))

Which results in 导致

({:ID "0000010890", :CREDIT "FLOW 1"} 

{:ID "0000010809"}) {:ID“ 0000010809”})

(map (fn [[k v]]
       (into {} [[:ID k]
                 [:CREDIT (apply str (interpose ", " (distinct (map :CREDIT v))))]]))
     (group-by :ID data))

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM