Skip to content

Instantly share code, notes, and snippets.

@mattdeboard
Last active August 29, 2015 14:02
Show Gist options
  • Select an option

  • Save mattdeboard/9e60a7dd4d101fa368dc to your computer and use it in GitHub Desktop.

Select an option

Save mattdeboard/9e60a7dd4d101fa368dc to your computer and use it in GitHub Desktop.
(defn group-by-many
"Like `group-by', but allows grouping by multiple keys.
Example:
(group-by-many [{:a 1 :b 2 :c 3} {:a 7 :b 12 :c -4}] [:a :c])
>>> {#{1 3} {:a 1 :b 2 :c 3} #{7 -4} {:a 7 :b 12 :c -4}}
"
[ks m]
(let [f (fn [x]
{(-> x (select-keys ks) vals set) x})]
(apply merge (map f m))))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment