在clojure中处理地图的顺序

时间:2016-03-31 17:25:57

标签: clojure

我有地图序列

(def aaa '({:a "read"} {:a "open"}) )

我需要获得以下值序列

("read" "open")

我可以用什么方式在clojure中做到这一点?

1 个答案:

答案 0 :(得分:4)

像@jmargolisvt提到的那样,这非常简单。如果您还没有通过braveclojure.com这样的工作,那么我强烈推荐它,只是为了让您对Clojure的基本函数式编程有所了解。

(def aaa '({:a "read"} {:a "open"}) )
(map :a aaa)

编辑:只是想扩展一点,以提供一个礼貌的RTFM。关键字可以是在地图上运行的函数。如果您的关键字不在列表中,则会返回nil,如果您有

(def bbb '({:a "read"} {:a "open"} {:b "scribble") )

并且您希望仅获取:a值并且不会得到nil值,那么您首先需要filter序列。

(map :a 
     (filter #(contains? % :a) bbb))