【发布时间】:2016-03-16 10:12:02
【问题描述】:
此代码从地图向量中提取所有值。
(def vector-of-maps [{:a "1" :b "2"}{:a "3" :b "4"}])
(mapcat vals vector-of-maps)
所以我明白了 ("1" "2" "3" "4")
我只想从 :a 获取值来获取 ("1" "3")
我可以用什么方法呢?
【问题讨论】:
标签: clojure
此代码从地图向量中提取所有值。
(def vector-of-maps [{:a "1" :b "2"}{:a "3" :b "4"}])
(mapcat vals vector-of-maps)
所以我明白了 ("1" "2" "3" "4")
我只想从 :a 获取值来获取 ("1" "3")
我可以用什么方法呢?
【问题讨论】:
标签: clojure
(def vector-of-maps [{:a "1" :b "2"} {:a "3" :b "4"}])
(map :a vector-of-maps)
产量
("1" "3")
map 将应用:a 作为一个函数,该函数将从vector-of-maps 中的每个值中提取值。
【讨论】:
你可以这样做:
(map val (filter (comp #{:a} key) (apply concat vector-of-maps)))
解释:
apply concat 将一系列映射转换为来自所有这些映射的所有键值对的序列filter (comp #{:a} key) 仅保留其键在单元素集合 #{:a} 中的键值对
map val 从每个剩余的键值对中获取值例子:
(def vector-of-maps [{:a "1" :b "2"} {:a "3" :b "4"}])
(map val (filter (comp #{:a} key) (apply concat vector-of-maps)))
;=> ("1" "3")
【讨论】: