[英]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.