使用clojure从地图中删除关键点

使用clojure从地图中删除关键点,clojure,Clojure,我有一张表格里的地图 ({:A 1.0, :B 2.0} {:A 3.0, :B 1.0} {:A 4.0, :B 1.0} {:A 12.0, :B 2.0} {:A 3.0, :B 1.0}) 我只希望返回值,不希望返回键。我尝试使用vals函数,但仅当其形式为{:a1.0,:b2.0}时才使用 还尝试使用for循环,然后使用peek功能。但是当我使用peek函数时,我得到了nil,因为这里的第一个元素是map 我想返回这个:{[1.0 2.0][3.0 1.0][3.0 1.0][4.0

我有一张表格里的地图

({:A 1.0, :B 2.0} {:A 3.0, :B 1.0} {:A 4.0, :B 1.0} {:A 12.0, :B 2.0} {:A 3.0, :B 1.0})
我只希望返回值,不希望返回键。我尝试使用
vals
函数,但仅当其形式为
{:a1.0,:b2.0}
时才使用

还尝试使用
for
循环,然后使用
peek
功能。但是当我使用
peek
函数时,我得到了
nil
,因为这里的第一个元素是map


我想返回这个:
{[1.0 2.0][3.0 1.0][3.0 1.0][4.0 1.0][12.0 2.0][3.0 1.0]}

你需要澄清你的问题。您的输入不是地图,而是一系列地图。您需要一个向量序列的结果

使用向量表示法(vec of maps,vec of vecs)写出它们。请注意,您的建议答案中也有一个错误,我已更正

(ns tst.clj.core
  (:use clj.core
        clojure.test ))

(def vec-of-maps [ {:A 1.0, :B 2.0} {:A 3.0, :B 1.0} {:A 4.0, :B 1.0} {:A 12.0, :B 2.0} {:A 3.0, :B 1.0} ] )

(def answer      [ [1.0 2.0]         [3.0 1.0]         [4.0 1.0]         [12.0 2.0]       [3.0 1.0] ] )

(defn ff
  [data]
  (forv [curr-map data]
    (vec (vals curr-map))))

(deftest tt
  (is (= answer (ff vec-of-maps))))
请注意,如果我们只关心等式,我们实际上不需要将结果强制转换为向量。我们可以使用下面的
f2
,得到一个序列作为输出,它等于一个vec的vec:

(defn f2
  [data]
  (for [curr-map data]
    (vals curr-map)))

这里有地图列表。要获取
VAL
,您可以
map

user=> (map vals '({:A 1.0, :B 2.0} {:A 3.0, :B 1.0} {:A 4.0, :B 1.0} {:A 12.0, :B 2.0} {:A 3.0, :B 1.0}))
((1.0 2.0) (3.0 1.0) (4.0 1.0) (12.0 2.0) (3.0 1.0))
还要注意的是,贴图不是按顺序排列的(对于小的关键点集,它们看起来是按顺序排列的)。因此,如果要确保获得
:A
:B
的值,可以使用
juxt
和所需的键:

user=> (map (juxt :A :B) '({:A 1.0, :B 2.0} {:A 3.0, :B 1.0} {:A 4.0, :B 1.0} {:A 12.0, :B 2.0} {:A 3.0, :B 1.0}))
([1.0 2.0] [3.0 1.0] [4.0 1.0] [12.0 2.0] [3.0 1.0])
我想退回这个:

{[1.02.0][3.01.0][3.01.0][4.01.0][12.02.0][3.01.0]}

不,你没有!你想回来吗

[[1.0 2.0][3.0 1.0][3.0 1.0][4.0 1.0][12.0 2.0][3.0 1.0]]
或同等清单

如果我们有

(def数据[{:a1.0,:b2.0}{:a3.0,:b1.0}{:a4.0,:b1.0} {:A 12.0,:B 2.0}{:A 3.0,:B 1.0}])

然后



正如所观察到的,这个解决方案是不够的,因为它不能保证每个子列表的顺序

你能在每次回答时不使用你的库来回答问题吗?这与SO的精神背道而驰,可能会让初学者感到困惑。这篇回复中没有使用它,只是一个剩余的声明。哦,不!!我甚至使用了juxt函数,但我没有得到它。谢谢你!
(map vals data)
;((1.0 2.0) (3.0 1.0) (4.0 1.0) (12.0 2.0) (3.0 1.0))