14
¿Cómo agrupar una colección de mapas por varias claves?agrupar por varias teclas en Clojure
Por ejemplo:
(def m1 [{:a 1 :b 2 :c 3}
{:a 1 :b 2 :c 4}
{:a 1 :b 4 :c 3}
{:a 1 :b 4 :c 3}])
(group-by-x [:a :b] m1)
me gustaría volver a este:
[{:a 1 :b 2} [{:a 1 :b 2 :c 3}{:a 1 :b 2 :c 4}],
{:a 1 :b 4} [{:a 1 :b 4 :c 3}{:a 1 :b 4 :c 3}]]
También puede '(grupo-por (Juxt: a: b) coll)', que le da pares en lugar de los mapas como las llaves. A menudo, este será un formato más útil que tener docenas de mapas con las teclas ': a' y': b', pero eso depende completamente de su aplicación. – amalloy
@amalloy: Derecha. Eso fue lo que escribí antes de darme cuenta de que las especificaciones requieren un mapa. Estoy de acuerdo en que los vectores posiblemente sean más útiles, debería haberlo incluido en la respuesta ... Gracias por corregir esta evidente omisión. :-) –