今天下午我的大脑正在试图弄清楚这个.我对Clojure和Lisp很新.我有一个数据结构,它是一个地图矢量,我希望将所有地图中的特定键的所有值都放到另一个矢量中.
例如,假设这是绑定到myvec的映射向量:
[ { "key1" "value1" "key2" "value2"} {"key1" "value3" "key2" "value4"} ]
Run Code Online (Sandbox Code Playgroud)
我想要一个看起来像的矢量
[ "value1" "value3" ]
Run Code Online (Sandbox Code Playgroud)
由密钥"key1"的所有值组成
我能想到的唯一方法是
(for [i (range (count(myvec)))] ((myvec i) "key1"))
Run Code Online (Sandbox Code Playgroud)
有没有更简单的方法?好像一定有.
谢谢.
ama*_*loy 20
(map #(get % "key1") myvec)应该是你所需要的一切.考虑使用:关键字而不是"字符串"作为键,因为它通常更好,更惯用.另外,你可以这样写(map :key1 myvec)
Jus*_*mer 10
(let [v [{"key1" "value1", "key2" "value2"} {"key1" "value3", "key2" "value4"}]]
(vec (map #(% "key1") v)))
Run Code Online (Sandbox Code Playgroud)
如果您为密钥使用关键字:
(let [v [{:key1 "value1", :key2 "value2"} {:key1 "value3", :key2 "value4"}]]
(vec (map :key1 v)))
Run Code Online (Sandbox Code Playgroud)
如果您不希望nil在地图没有给定键时包含值:
(let [v [{:key1 "value1", :key2 "value2"} {:key1 "value3", :key2 "value4"} {:key2 "value5"}]]
(vec (keep :key1 v)))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6696 次 |
| 最近记录: |