【发布时间】:2014-10-08 12:19:36
【问题描述】:
如何将列表或向量中的值放入地图中?
我是这样做的,但看起来并不简单:
user=> (into {} (map #(into [] %) (partition 2 [1 2 3 4 5 6])))
{1 2, 3 4, 5 6}
user=>
或者,如果我还想处理奇数个值(虽然可能不值得,但可能是为了保留键):
user=> (into {} (map #(if (even? (count %))
#_=> (into [] %)
#_=> [(first %) nil])
#_=> (partition-all 2 [1 2 3 4 5])))
{1 2, 3 4, 5 nil}
user=>
有没有更简单的方法来做到这一点?
【问题讨论】:
-
第一个可以用
(apply hash-map [1 2 3 4 5 6])完成。 -
太好了,谢谢@Tomo。我想根据你的建议,我可以用
(apply hash-map (let [a [1 2 3 4 5]] (if (odd? (count a)) (conj a nil) a)))之类的东西来实现第二个。随意把它放在答案格式。 -
让我们看看有没有比我聪明的人能回答得更好。 :)
标签: clojure