简体   繁体   English

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

[英]Clojure : merging two vectors into one map with new keys and values

I have two vectors [:v1 :v2 :v3] [:V1 :V2 :V3], i wish to create a vector in format : 我有两个向量[:v1:v2:v3] [:V1:V2:V3],我希望创建以下格式的向量:

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

为了多样性:

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

If, as your title suggests, contradicting your question text, you actually want the map {"v3" "V3", "v2" "V2", "v1" "V1"} , then 如果,正如您的标题所暗示的那样,如果您与问题文本矛盾,那么您实际上想要的是地图{"v3" "V3", "v2" "V2", "v1" "V1"} ,那么

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

... would give you ...会给你

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

You have to convert each item to its name first: 您必须先将每个项目转换为其名称:

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

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM