当您有一个键和值向量时创建地图

时间:2013-07-20 09:13:15

标签: clojure

我确信这很容易,但我怀疑在通往idomatic clojure的道路上我会有很多小问题。也许我错过了一些东西,但看着clojure地图页面,我找不到解决方案。

给定两个向量(其中一个键是值),你如何有效地(关键词!)创建一个从键到值的映射?

键和值如下:

(:year :month :day) (core/split "2013-02-18" #"-")

2 个答案:

答案 0 :(得分:17)

自然的解决方案是使用zipmap

(zipmap [:year :month :day] (clojure.string/split "2013-02-18" #"-"))
;= {:day "18", :month "02", :year "2013"}

对于像这样的小地图,它实际上非常有效。对于较大的地图,您希望zipmap使用当前不具有的瞬变。在JIRA中有一张票,附上我的补丁:CLJ-1005

当然,在一个人自己的代码库中包含瞬态启用的zipmap并将其优先于clojure.core中的那个使用它是很简单的。如果您正在制作更大的地图,这是非常重要的事情。

可以从补丁或ClojureScript核心库复制代码,ClojureScript核心库在zipmap中使用瞬态;这里是1844年版本ClojureScript source的链接(这个特殊功能可以在Clojure中使用而不做任何更改)。

答案 1 :(得分:2)

您要找的是zipmap