With a small edit, the one I made above can be made to reflect exactly the way assoc does when it encounters multiple key values: ;example: (revassoc stdwalllist "Garage")
(defun revassoc (itempred itemcomp / newitemlist)
(foreach item itempred
(if (= itemcomp (cdr item))
(setq newitemlist (append newitemlist (list item)))
)
)
(car newitemlist)
)
My previous one returns a list of all key's equal. This one returns the first of all in just a list, instead of a nested list.