如何返回地图中的所有关键字

时间:2016-04-16 20:20:16

标签: dictionary clojure

我想返回地图中出现的所有关键字。例如:

{:a 1 :d 4 :e 4}

我想得到(:a:d:e)。我的代码是

(get {:a 1 :d 4 :e 4} :keywords)

它返回零。那么如何解决呢?

1 个答案:

答案 0 :(得分:9)

我想你想从你的地图中获取所有keys。您可以使用以下方式执行此操作:

(keys {:a 1, :d 4, :e 4}
;; => (:a :d :e)

如果您希望获得所有关键字,当它们在地图中显示为关键字时,您需要filter仅匹配keyword?谓词:

(filter keyword? (keys {:a 1, 'd 4, :e 4, "f" 5}))
;; => (:a :e)

对于来自地图值的关键字类似:

(filter keyword? (vals {:a :b, "c" :d, 4 "e", 5 'f}))
;; => (:b :d)