Clojure-从哈希映射向量中提取值

Clojure-从哈希映射向量中提取值,clojure,Clojure,今天下午我绞尽脑汁想弄明白这个。一般来说,我对Clojure和Lisp还比较陌生。我有一个数据结构,它是一个映射向量,我想把一个特定键的所有值从所有映射中提取到另一个向量中 例如,假设这是绑定到myvec的映射向量: [ { "key1" "value1" "key2" "value2"} {"key1" "value3" "key2" "value4"} ] 我想要一个向量,看起来像 [ "value1" "value3" ] 由键“key1”的所有值组成 我能想到的唯一办法就是 (for

今天下午我绞尽脑汁想弄明白这个。一般来说,我对Clojure和Lisp还比较陌生。我有一个数据结构,它是一个映射向量,我想把一个特定键的所有值从所有映射中提取到另一个向量中

例如,假设这是绑定到myvec的映射向量:

[ { "key1" "value1" "key2" "value2"} {"key1" "value3" "key2" "value4"} ]
我想要一个向量,看起来像

[ "value1" "value3" ]
由键“key1”的所有值组成

我能想到的唯一办法就是

(for [i (range (count(myvec)))] ((myvec i) "key1"))
有没有更简单的方法?看来一定有

谢谢。

(map#(get%“key1”)myvec)
应该是您所需要的全部

(let [v [{"key1" "value1", "key2" "value2"} {"key1" "value3", "key2" "value4"}]]
  (vec (map #(% "key1") v)))
如果您对密钥使用关键字:

(let [v [{:key1 "value1", :key2 "value2"} {:key1 "value3", :key2 "value4"}]]
  (vec (map :key1 v)))
如果不希望在贴图没有给定键时包含
nil
值:

(let [v [{:key1 "value1", :key2 "value2"} {:key1 "value3", :key2 "value4"} {:key2 "value5"}]]
  (vec (keep :key1 v)))

谢谢正是我想要的。我正在从查询中提取键和值。我得到了类似“State:Closed”的东西,并且正在设置一个类似{“State”“Closed”}的hashmap。这就是为什么我不使用:关键字。还是还有一些方法可以使用关键字?删除了我的旧评论,建议将字符串转换为关键字。9年前我认为这是个好主意,但现在不再是了。关键字最好用于源文件中的文字。如果要从外部获取数据,请将其保留为字符串。