(into
(sorted-map-by
(fn [key1 key2]
(compare
[(get-in my-map [key1 :ordnen]) key1]
[(get-in my-map [key2 :ordnen]) key2])))
my-map)
Итак, вы хотите отсортировать по значению.В вашем случае значением является карта, а затем вам нужно отсортировать по значению ключа: ordnen на этой карте.(get-in my-map [key: ordnen]) - это значение, по которому вы хотите отсортировать, но вам нужно убедиться, что компаратор работает с уникальными значениями.Итак, мы делаем вектор значения и ключа.
Приведенный выше подход, предложенный Тейлором, не будет работать с неуникальными значениями.Я добавил еще одну запись для ordnen 4.
(def my-map {1 {:foo "String_1" :ordnen 5}
2 {:foo "String_2" :ordnen 4}
3 {:foo "String_2" :ordnen 4}
4 {:foo "String_3" :ordnen 3}
5 {:foo "String_4" :ordnen 1}})
(into (sorted-map-by
(fn [key1 key2]
(compare (:ordnen (get my-map key1))
(:ordnen (get my-map key2)))))
my-map)
Запись карты с ключом 3 отсутствует.
{5 {:foo "String_4", :ordnen 1}, 4 {:foo "String_3", :ordnen 3}, 2 {:foo "String_2", :ordnen 4}, 1 {:foo "String_1", :ordnen 5}}