在Clojure中将矢量转换为索引地图?

Jar*_*zka 1 dictionary vector clojure

假设我有以下地图矢量:

[{:name "Jack" :age 5}
{:name "Joe" :age 15}
{:name "Mare" :age 34}
{:name "William" :age 64}
{:name "Adolf" :age 34}]
Run Code Online (Sandbox Code Playgroud)

我想将其转换为索引地图,例如:

{1 {:name "Jack" :age 5}
 2 {:name "Joe" :age 15}
 3 {:name "Mare" :age 34}
 4 {:name "William" :age 64}
 5 {:name "Adolf" :age 34}}
Run Code Online (Sandbox Code Playgroud)

在某些时候,当我修改索引地图时,我想将其转换回地图矢量.

怎么做?

小智 5

您可以使用map-indexed以将每个映射关联到其索引,然后将其缩减为hashmap: (reduce into {} (map-indexed #(assoc {} %1 %2) test))

如果你想回到你的第一个结构: (vec (vals your-indexed-map))