Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Map Clojure-基于键值映射两个哈希映射_Map_Clojure - Fatal编程技术网

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}}