【问题标题】:Search vector elements in collection of vectors在向量集合中搜索向量元素
【发布时间】:2016-08-28 09:40:50
【问题描述】:

我有一个关键字向量,我有一个包含实际数据的向量集合,我想做的是搜索每个关键字,如果任何向量包含该关键字,则返回 true。目前,我只有一个关键字的实现,但我不能让它适用于关键字向量。我是 Clojure 的新手,所以任何建议都将不胜感激。 到目前为止,这是我的代码:

(def results (apply map vector [["test1" "test2"] ["test3" "test4" "test5"]]))
(defn in?
  "true if coll contains elm"
  [coll]
  (some #(= "test4" %) coll))

  (println (map #(in? %) results))

但我想要这样的东西:

    (def searchwords ["test3" "test2"])
    (def results (apply map vector [["test1" "test2"] ["test3" "test4" "test5"]]))
    (defn in?
      "true if coll contains elm"
      [coll keyword]
      (some #(= keyword %) coll)) 

【问题讨论】:

  • 您能否详细说明您想要实现的目标?示例输入和输出会有所帮助。
  • 例如现在在?函数返回 (nil, true),这意味着在第二个向量中找到了“test4”,我想要实现的是每当 (some #(=keyword %) coll) 返回 true 以更改再次搜索的关键字
  • 请为您需要实现的功能提供示例输入和预期输出。将它们直接附加到问题中。

标签: clojure


【解决方案1】:

你可以试试下面的

(defn search
   [coll keyword]
   (println (flatten coll))
   (if (= (flatten coll) (list keyword))
     true))

(defn in?
   [coll keyword]
   (map #(search % %2) coll keyword))    

(in? results searchwords)
;=> (true)

这仅适用于搜索词为 ["test2"] 且结果为 [["test2"]] 的情况。 也许你能想出一种方法来使用in? 遍历结果。

P.s 也是 clojure 的新手。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-20
    • 1970-01-01
    • 2013-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多