Вы используете sorted-map-by, указав сравнение, за которым следуют пары ключ-значение. Компаратор - это функция, которая принимает две клавиши и возвращает -1, 0 или 1 в зависимости от того, является ли первая клавиша меньше, равна или больше, чем вторая клавиша.
Пример:
user=> (sorted-map-by (fn [k1 k2] (compare (mod k1 10) (mod k2 10))) 10 1 23 4 2 5)
{10 1, 2 5, 23 4}
Поскольку функция сравнения принимает только ключи в качестве аргументов, вы не можете использовать это для сортировки по значениям.
Нет способа иметь отсортированную карту, где карта сортируется по значениям. Если бы это было так, было бы невозможно найти запись по ключу, потому что вы не могли бы использовать порядок, чтобы определить, где находится запись (поскольку порядок не будет зависеть от ключа).