Clojure:从惰性序列中提取具有特定值的映射
Clojure: Extract maps with specific values from Lazy Sequence
我有一个 Clojure 惰性序列:
{
{:keyOne 123, :keyTwo "TestVal"}
{:keyOne 456, :keyTwo "Value2"}
{:keyOne 789, :keyTwo "TestVal"}
}
我想获取对给定键具有特定值的地图,例如我想要所有具有 "TestVal"
值的地图作为 :keyTwo
值,所以我期望结果中的第一个和第三个元素。
我想我应该能够使用 filter
解决这个问题,但我已经查看了我能找到的所有示例,但他们从未使用过这样的嵌套结构。
{{:keyOne 123, :keyTwo "TestVal"}
{:keyOne 456, :keyTwo "Value2"}
{:keyOne 789, :keyTwo "TestVal"}}
在 clojure 中,这个表达式没有意义,这不是映射的惰性序列。
为了充分回答你的问题,我认为输入数据如下:
(def input '({:keyOne 123, :keyTwo "TestVal"}
{:keyOne 456, :keyTwo "Value2"}
{:keyOne 789, :keyTwo "TestVal"}))
我们可以像这样为您的目的制作表达式:
(filter (fn [m] (= "TestVal" (:keyTwo m))) input)
它不关心输入序列是惰性的还是非惰性的(eager)。
我有一个 Clojure 惰性序列:
{
{:keyOne 123, :keyTwo "TestVal"}
{:keyOne 456, :keyTwo "Value2"}
{:keyOne 789, :keyTwo "TestVal"}
}
我想获取对给定键具有特定值的地图,例如我想要所有具有 "TestVal"
值的地图作为 :keyTwo
值,所以我期望结果中的第一个和第三个元素。
我想我应该能够使用 filter
解决这个问题,但我已经查看了我能找到的所有示例,但他们从未使用过这样的嵌套结构。
{{:keyOne 123, :keyTwo "TestVal"}
{:keyOne 456, :keyTwo "Value2"}
{:keyOne 789, :keyTwo "TestVal"}}
在 clojure 中,这个表达式没有意义,这不是映射的惰性序列。 为了充分回答你的问题,我认为输入数据如下:
(def input '({:keyOne 123, :keyTwo "TestVal"}
{:keyOne 456, :keyTwo "Value2"}
{:keyOne 789, :keyTwo "TestVal"}))
我们可以像这样为您的目的制作表达式:
(filter (fn [m] (= "TestVal" (:keyTwo m))) input)
它不关心输入序列是惰性的还是非惰性的(eager)。