使用Clojure中的reduce函数和into函数可以将列表转换为地图。reduce函数将列表中每个元素都应用到一个特定的函数中,将结果与下一个元素组合在一起。into函数将这些组合的结果放入一个新的可变容器中。
以下是一个示例代码,它将具有相同键的Map聚合在一起,并将它们放置在一个新Map中:
(defn maps-by-key [k maps] (into {} (reduce (fn [acc m] (reduce (fn [inner-acc [k v]] (update-in inner-acc [k] #(conj % v))) acc m)) {} maps)))
;; Example usage: (maps-by-key :name [{:name "Jim", :age 30} {:name "Sally", :age 25} {:name "Susan", :age 42} {:name "Jim", :age 41}])
;; Output: {:Jim [{:name "Jim", :age 30} {:name "Jim", :age 41}], :Sally [{:name "Sally", :age 25}], :Susan [{:name "Susan", :age 42}]}
下一篇:按照第一次使用特定产品进行分区。