以下是一些值。每個都是一系列的升序(或其他分組)值。在Clojure中分區分區?
(def input-vals [[[1 :a] [1 :b] [2 :c] [3 :d] [3 :e]]
[[1 :f] [2 :g] [2 :h] [2 :i] [3 :j] [3 :k]]
[[1 :l] [3 :m]]])
我可以按價值分割它們。
=> (map (partial partition-by first) input-vals)
((([1 :a] [1 :b]) ([2 :c]) ([3 :d] [3 :e])) (([1 :f]) ([2 :g] [2 :h] [2 :i]) ([3 :j] [3 :k])) (([1 :l]) ([3 :m])))
但是,我得到了3個分區序列。我想要一個單獨的分區組序列。
我想要做的是返回單個惰性序列(可能)是連接的各個分區的惰性序列。例如我想產生這樣:
((([1 :a] [1 :b] [1 :f] [1 :l]) ([2 :c] [2 :g] [2 :h] [2 :i]) ([3 :d] [3 :e] [3 :j] [3 :k] [3 :m])))
請注意,並非所有的值出現在所有序列(有第三矢量沒有2
)。
這當然是我的問題的簡化。真實的數據是來自非常大的文件的一組惰性流,所以什麼都不能實現。但我認爲上述問題的解決方案是解決我的問題。
隨意編輯標題,我不太確定如何表達它。
您是否知道您改變了多少問題? :p – Chiron
我改變了內容,但沒有改變我正在尋找的功能的應用。 – Joe
感謝您的耐心人。我試圖通過使用簡單的值來儘可能簡化問題。 (也造成了repl中的拼寫錯誤)。我試圖實現的目標沒有改變,但凱龍的答案使用了身份,這意味着我必須證明用於分區的投影的價值(在本例中爲「第一」)具有共同的價值,但價值他們自己('[1:a]')是相互獨特的。 – Joe