Análisis de un mapa de artículos de artículos -> Categorías-Vectores en listas categorizadas

StackOverflow https://stackoverflow.com/questions/9507071

Pregunta

Tengo un mapa de nombres de elementos y vectores de vectores que almacenan categorías de las cuales se encuentra el elemento de la cadena de llaves. Estoy tratando de analizar este mapa en un par de defpartiales de HICCUP que luego pueden mostrarlos organizados por categoría.

Lo que creo que debo hacer es analizar el mapa una vez para hacer un conjunto de todas las categorías y subcategorías posibles.Una vez que tengo que puedo iterar eso y filtrar todos los coincidencias en el mapa principal para obtener las cadenas clave adecuadas.

¿Cómo puedo ir del mapa a continuación, a un conjunto de todas las categorías principales y secundarias?Una vez que tengo ese conjunto, ¿cómo lo uso su consulta el mapa original por los valores no por clave?

¡Gracias por cualquier ayuda!

(def ITEM-CATEGORIES
 { "thingy"          [["CatergoryA" "SubcategoryA"]]
   "thingy2"         [["FFT"]]
   "thingy3"         [["Generators" "Chaotic"]]
   "thingy4"         [["Analysis" "Pitch"] ["MachineListening"]]
   "thingy5"         [["Multichannel" "Ambisonics"]]
 }

gol en el código sudo

(generate-hiccup-partial (create-set-of-unique-categories ITEM-CATEGORIES) ITEM-CATEGORIES)
....
(defpartial generate-hiccup-partial
  [categories map]
   ;; hiccup code
   (in-each-sub/main-category-get-keys-by-value categories map))  ;; return a list of all keys with the same categories

¿Fue útil?

Solución

I do not know what a defpartial is, but this will transform that map:

(defn xform [ic]
  (reduce (fn [result [k [vs]]]
        (reduce (fn [r v]
              (assoc r v (cons k (r v)))))
            result vs))
      {} ic))

user=> (xform ITEM-CATEGORIES)
{"SubcategoryA" ["thingy"], "CatergoryA" ["thingy"], "Ambisonics" ["thingy5"],
 "Multichannel" ["thingy5"], "Pitch" ["thingy4"], "Analysis" ["thingy4"],
 "Chaotic" ["thingy3"], "Generators" ["thingy3"], "FFT" ["thingy2"]}

Otros consejos

When I find my self thinking about going up and down nested data structure my mind jumps to the zipper library you could take ITEM-CATECORIES and build a zipper of it then make any number of relations by 'zipping' up and down the tree.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top