(require '[clojure.set :as set])
(def season {:summer 0, :fall 1, :winter 2, :spring 3})
;; the way back is the map turned inside out
(def by-value (set/map-invert season))
(def winter (by-value 2))
;; winter is :winter
(println "winter is" winter)
;; an unknown value gives nil instead of an error
(println "value 9 is" (by-value 9))