Недавно разбирал задачу определения наиболее встречающейся в тексте буквы и наткнулся на решение:
import string def checkio(text): """ We iterate through latyn alphabet and count each letter in the text. Then 'max' selects the most frequent letter. For the case when we have several equal letter, 'max' selects the first from they. """ text = text.lower() return max(string.ascii_lowercase, key=text.count)
Понятно, что функция сравнивает неск аргументов и выбирает максимальное из них. Но по факту - как используется key? Смотрел много примеров, везде по разному, единого правила не нашел. В интернете нет описания этой функции, кроме стандартного, в котором ничего про key не сказано.
В данном случае получается мы сравниваем алфавит ‘abcdef…xyz’ с текстом # “Lorem ipsum dolor sit amet”. Т.е. первый аргумент - алфавит, 2й - буква в тексте. Хотя опять же непонятно как здесь сравнение идет побуквенно и непонятна запись “key=text.count”. У функции Count другой вобще синтаксис - Count(что считать). Но здесь text.count все по-другому.
И, допустим сравниваем алфавит с 5 буквами ‘a’(посчитал Count). В данном случае почему выберется максимальное ‘a’?
Вобщем не могу понять как работает это решение, а оно работает.
Помогите пожалуйста разобраться.