Вот здесь
if primary>max_value:
max_key=primary
max_slov=key
надо добавить
max_value = primary т.е.
if primary > max_value:
max_key = primary
max_slov = key
max_value = primary
у вас же изменилось "текущее" максимальное значение, а вы этого не учли... Это по первому вопросу.
По поводу
Так же не могу реализовать условие "Если таких слов несколько, вывести лексикографически первое (можно использовать оператор < для строк)." Просьба дать разъяснение.
Я бы на Вашем месте просто отсортировал словарь по возрастанию (убыванию) значений и на последних(первых) двух(или более) ключах сравнил значения и из этого уже делал бы выводы - одно слово встречается максимальное кол-во раз или несколько слов.
P.S. с помощью операторов < и > можно сравнивать не только числовые значения, но и строки.