Не понимаю, каким образом проводится сортировка по ключу key=lambda x: a[x]

Нашел в интернете решение задания с codewars и адаптировал под свой код. Сидел разбирался и никак не могу понять, как работает сортировка в предпоследней строке, можете объяснить, пожалуйста?)

def howmany(x, i):
    return sum(map(lambda x: 1 if i in x else 0, x))

def mix(s1, s2):
    a={}
    for i in "abcdefghijklmnopqrstuvwxyz":
        s11 = howmany(s1, i)
        s22 = howmany(s2, i)
        if s11 > s22:
            if s11>1:
                a[i] = -s11,("1:"+i*s11)
        elif s11 < s22:
            if s22>1:
                a[i] = -s22,("2:"+i*s22)
        elif s11 == s22:
            if s11>1:
                a[i] = -s11,("=:"+i*s11)
    return "/".join(a[i][1] for i in sorted(a, key=lambda x: a[x]))

print(mix("Are they here", "yes, they are here"))

На выходе получается : "2:eeeee/2:yy/=:hh/=:rr"


Ответы (1 шт):

Автор решения: MarianD
sorted(a, key=lambda x: a[x])

a - это словарь, значит, sorted() возвращает упорядоченный список его ключей.

Но он будет упорядоченный не для ключей (переменная x в функции lambda x: a[x]), а для значений этих ключей (а[x] в функции lambda x: a[x]).

→ Ссылка