有一个大小相同的列表列表,例如:
(def d [["A" "B"] ["A" "C"] ["H" "M"]])
如何将其转换为集合列表,每个集合都为上面的索引设置:
[#{"A" "H"} #{"B" "C" "M"}]
答案 0 :(得分:17)
(map set (apply map vector d))
“(apply map vector)
”是其他语言(如Python)中所谓的“zip”。它在vector
的每个元素的第一项上调用d
,然后在每个元素的第二项等上调用
然后我们在每个集合上调用set
。
答案 1 :(得分:4)
如果散列集允许重复键,则可以使用:
(apply map hash-set d)
相反,你可以做丑陋的
(apply map (fn [& s] (set s)) d)
答案 2 :(得分:1)
我建议如下:
(reduce
(fn [sets vals]
(map conj sets vals))
(map hash-set (first d))
(rest d))