Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Clojure csv映射为{:key1{a,b,c},:key2{n,m,k}_Clojure - Fatal编程技术网

Clojure csv映射为{:key1{a,b,c},:key2{n,m,k}

Clojure csv映射为{:key1{a,b,c},:key2{n,m,k},clojure,Clojure,装载后: (csv/read-csv "Fetch, get, bring \n Take, receive, accept") 我得到: (["Fetch" " get" " bring "] [" Take" " receive" " accept"]) 现在,我想将其转换为具有唯一键和设置为值的地图,如: [:key1 #{Fetch, get, bring}, :key2 #{Take, receive, accept}] 我的目标是能够查找一个单词,说get,然后返回“Fet

装载后:

(csv/read-csv "Fetch, get, bring \n  Take, receive, accept")
我得到:

(["Fetch" " get" " bring "] ["  Take" " receive" " accept"])
现在,我想将其转换为具有唯一键和设置为值的地图,如:

[:key1 #{Fetch, get, bring}, :key2 #{Take, receive, accept}]

我的目标是能够查找一个单词,说get,然后返回“Fetch,bring”

我能够得到类似的东西,这对我来说很有用

inp正在([“获取”“获取”“带来”][“获取”“接收”“接受”])

我的目标是能够查找单词,说get,然后返回“Fetch,bring”

不完全确定您的目标,但这并没有阻止我实现一个函数,该函数可以获取一个单词的所有同级。我认为你不需要一张带有随机键的地图,是吗?请注意,集合实现为哈希映射,其中值与键相同(例如,
{:a:b}
是一个环绕
{:a:a,:b:b}

现在,首先将数据解析为单词集列表:

(def word-sets
  (map (comp set #(map string/trim %))
       (csv/read-csv "Fetch, get, bring \n  Take, receive, accept")))
;; => (#{"bring" "Fetch" "get"} #{"accept" "Take" "receive"})
然后使用函数获取单词的同级:

(defn siblings [word]
  (mapcat #(when (contains? % word) (disj % word))
          word-sets))
使用set操作符
contains?
检查每个单词集是否包含单词,如果是,则返回该单词集,并将该单词
disj
oined。由于
when
,不包含该单词的单词集将变为
nil
,而
mapcat
将删除
nil
项,并将其余项合并到一个平面列表中

例如:


到目前为止,你做了什么尝试?我的思路是:user=>(doseq[i inm].\u=>(let[x(gensym:key”)].\u=>(assoc hm x i))。\u=>(prn hm))为什么要将要在地图值中查找的内容打包?@cfrick我最终使用了集合。感谢您的回复,我非常感谢。!我最终使用了一个集合,但为了完成,我只是添加了一个答案,让我们接近我开始使用的东西。
(defn siblings [word]
  (mapcat #(when (contains? % word) (disj % word))
          word-sets))
(siblings "get")
;; => ("bring" "fetch")

(siblings "Take")
;; => ("accept" "receive")

(siblings "non existing")
;; => '()