加载后:
if (cur.item.equals(item))
我明白了:
(csv/read-csv "Fetch, get, bring \n Take, receive, accept")
现在,我想将其转换为具有唯一键的地图,并将其设置为以下值:
(["Fetch" " get" " bring "] [" Take" " receive" " accept"])
我的目标是能够查词,说出并返回“获取,携带”
答案 0 :(得分:1)
我的目标是能够查词,说出并返回“获取,携带”
不能完全确定您的目标,但这并不能阻止我实现一个能够获取单词的所有同级项的功能。我认为您不需要带有随机密钥的地图,还是吗?请注意,集合被实现为哈希映射,其中值与键相同(例如#{: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))
使用集合运算符contains?
,我们会检查每个单词集是否包含该单词,如果是,我们将返回包含单词disj
的单词集。由于when
,不包含该单词的单词集变为nil
,而mapcat
删除了nil
条目,并将其余条目合并到一个平面列表中。>
例如,
(siblings "get")
;; => ("bring" "fetch")
(siblings "Take")
;; => ("accept" "receive")
(siblings "non existing")
;; => '()
答案 1 :(得分:0)
我能够得到类似的东西,为我做窍门。
inp正在([[“获取”“获取”“带来”] [“接受”“接收”“接受”])。
(def x (map #(into #{} %) inp))
-> [#{Fetch, get, bring} #{Take, receive, accept}]
(map #(hash-map (gensym ":key") %) x)
-> ({:key6393 #{" bring " " get" "Fetch"}} {:key6394 #{" Take" " receive" " accept"}})