【发布时间】:2019-11-10 00:31:35
【问题描述】:
我是 Clojure 菜鸟。我正在尝试采用惰性地图序列并将其转换为单个地图。映射键是整数,值是向量。 我见过很多合并地图的例子,例如
(merge map1 map2) ;;or
(into {} [{a: 1} {b: 2} {c: 3}])
但是当它是一个惰性序列时,我仍然遇到困难。当我使用:
(into {} mapSeq)
它只返回序列中的最后一张地图。
(defn combine-maps [mapSeq]
(pp/pprint (into {} mapSeq))))
(defn file-input-to-vec [file]
(let [page (line-seq (clojure.java.io/reader file))
page-number (vec (mapv #(str/split %1 #" ") page))]
(combine-maps (for [i page-number]
{ :pageID (edn/read-string (first i))
:outpages (convert-to-int-vec (drop 1 i)) }))))
我只得到最后一页:
{:pageID 6, :outpages [9770 0 8758 6103 9560 356 8469 3570 1178]}
我想要这个:
{:pageID 0, :outpages [6 5 2 4 1 3],
:pageID 1, :outpages [0 461 4772 1324 1735 487 5668],
:pageID 2, :outpages [4412 0 209 3130 6902 8397 4373 905 3833],
:pageID 3, :outpages [5103 1203 7063 0 5866 445 5498 6217 6498],
... }
【问题讨论】:
标签: clojure