我确信这很容易,但我怀疑在使用i的过程中会有很多小问题。也许我遗漏了一些东西,但在查看clojure地图页面时,我没有找到解决方案。
给定两个向量(一个关键字,另一个值),你如何有效地(关键词!)创建从键到值的映射?
键和值如下:
(:year :month :day) (core/split "2013-02-18" #"-")
发布于 2013-07-20 09:16:22
自然的解决方案是使用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核心库复制过来,后者在其zipmap
中使用瞬态;此处是到1844版本的ClojureScript source的链接(此特定函数无需更改即可在Clojure中使用)。
发布于 2013-07-20 09:17:09
你要找的是zipmap
https://stackoverflow.com/questions/17760652
复制