【发布时间】:2015-05-12 22:10:05
【问题描述】:
在 Clojure 中,我想从地图中重命名键和选择键。 简单的做法是:
(-> m
(rename-keys new-names)
(select-keys (vals new-names)))
但这会在整个地图上重复两次。 有没有办法通过一次迭代来做到这一点?
【问题讨论】:
-
如果你的新名字很小但 m 很大,你可以先选择
(**keys** new-names)然后重命名(小)结果 -
如果您不需要将结果作为地图而只是一个函数,您也可以不进行迭代:
(comp m new-names-to-old-names-map) -
你为什么不这样做呢?
{:new-key-1 (my-map :old-key-1) :new-key-2 (my-map :old-key-2) :new-key-3 (my-map :old-key-3)}
标签: clojure