Не понимаю, каким образом проводится сортировка по ключу 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]).