Clojure:使用新的键和值将两个向量合并到一个映射中

时间:2014-11-12 04:02:12

标签: vector map clojure

我有两个向量[:v1:v2:v3] [:V1:V2:V3],我希望以格式创建一个向量:

[ [:key "v1" :value "V1"]
  [:key "v2" :value "V2"]
  [:key "v3" :value "V3"]
  ]

3 个答案:

答案 0 :(得分:3)

(mapv (fn [k v] [:key (name k) :value (name v)])
  [:v1 :v2 :v3] [:V1 :V2 :V3])

答案 1 :(得分:1)

为了多样性:

(into [] (zipmap (map name [:v1 :v2 :v3]) (map name [:V1 :V2 :V3])))

答案 2 :(得分:1)

如果您的标题显示与您的问题文字相矛盾,那么您实际上想要地图{"v3" "V3", "v2" "V2", "v1" "V1"},然后

(zipmap [:v1 :v2 :v3] [:V1 :V2 :V3])

......会给你

{:v3 :V3, :v2 :V2, :v1 :V1}

您必须先将每个项目转换为其名称:

(->> [[:v1 :v2 :v3] [:V1 :V2 :V3]]
     (map (partial map name))
     (apply zipmap))

;{"v3" "V3", "v2" "V2", "v1" "V1"}