Map Clojure-基于键值映射两个哈希映射
我有两套类似的地图Map Clojure-基于键值映射两个哈希映射,map,clojure,Map,Clojure,我有两套类似的地图 [{:id 101 :price 40.00} {:id 102 :price 50.00} {:id 103 :price 30.00}] [{:id 101 :price 45.00} {:id 102 :price 50.00} {:id 103 :price 20.00}] 我试图根据“id”键将第一个序列中的每个地图与第二个序列中的对应地图进行匹配,以便确定新的价格 获取新价格的逻辑似乎足够简单,但我似乎无法使两张地图对齐。我假设map函数就是我所需要的,但是在
[{:id 101 :price 40.00} {:id 102 :price 50.00} {:id 103 :price 30.00}]
[{:id 101 :price 45.00} {:id 102 :price 50.00} {:id 103 :price 20.00}]
我试图根据“id”键将第一个序列中的每个地图与第二个序列中的对应地图进行匹配,以便确定新的价格
获取新价格的逻辑似乎足够简单,但我似乎无法使两张地图对齐。我假设map函数就是我所需要的,但是在REPL中花费了一些时间之后,我无法产生期望的结果
有人能给我指一下正确的方向吗
(def data1 [{:id 101 :price 40.00} {:id 102 :price 50.00} {:id 103 :price 30.00}])
(def data2 [{:id 101 :price 45.00} {:id 102 :price 50.00} {:id 103 :price 20.00}])
(require '[clojure.set :as set])
(set/join data1 (map #(set/rename-keys % {:price :new-price}) data2))
;=> #{{:new-price 45.0, :price 40.0, :id 101}
; {:new-price 20.0, :price 30.0, :id 103}
; {:new-price 50.0, :price 50.0, :id 102}}