Самый простой способ сортировки по второму элементу - определить собственную функцию сортировки, которая может работать следующим образом:
fun({KeyA,ValA}, {KeyB,ValB}) -> {ValA,KeyA} =< {ValB,KeyB} end.
И назовите это lists:sort/2
:
1> lists:sort(fun({KeyA,ValA}, {KeyB,ValB}) -> {ValA,KeyA} =< {ValB,KeyB} end., [{a,b},{b,a},{b,b}]).
[{b,a},{a,b},{b,b}]
Это потому, что Erlang всегда будет автоматически сравнивать кортежи от первого до последнего элемента. Эта функция меняет местами первый и второй элементы, поэтому второй действует как первая точка сравнения. Затем ключ в вашем диктанте будет использоваться для заказа записей, значения которых совпадают.