Clojure:将地图矢量转换为带有递增键的地图

问题描述

我有地图矢量

cards_vector = [{...} {...} ...]

和一个原子

(def cards_map (atom {})

对于cards_vector中的每个地图,我想通过键card-n将地图添加到cards_map,其中n从1递增到count(cards_vector)。因此,cards-map应该返回

{:card-1 {...}
 :card-2 {...}
 ...
 :card-n {...}}

解决方法

我建议以下代码段:

(->> [{:a 1} {:b 2}]
     (map-indexed (fn [idx value] [(keyword (str "card-" idx)) value]))
     (into {}))
;; => {:card-0 {:a 1},:card-1 {:b 2}}

但我同意cfrick的评论。选择形状为:card-X的键似乎并不实际。但是你可以做到:)

,

另一种解决方案,更接近命令式编程,但可能不如map-indexed:

(into {} (for [k (range (count @cards_map))] [(keyword (str "card-" k)) (nth @cards_map k)]))

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...