Есть некоторые проблемы с вашим кодом:
- Не называйте переменные после встроенных модулей (даже в качестве примера). Используйте
d
или dict_
вместо dict
. То же самое max
.
- Ваш
max
(фиксированный на -1
) будет всегда быть <= dict[i]
, поскольку счет всегда >= 1
.
- Вы определяете
lst
как список, а затем присваиваете ему строку.
Намного проще, используйте collections.Counter
, рассчитайте максимальное значение, затем используйте max
с пользовательской функцией:
from collections import Counter
inputString = input()
c = Counter(inputString)
print(c)
maxval = max(c.values())
def max_logic(x):
cond1 = x[1] % 2
cond2 = x[1] - maxval
return cond1, cond2
key, val = max(c.items(), key=max_logic)
Пример выполнения:
print(key, val)
thisisateststring
Counter({'t': 4, 's': 4, 'i': 3, 'h': 1, 'a': 1, 'e': 1, 'r': 1, 'n': 1, 'g': 1})
i 3
Решение предполагает допустимое нечетное число , существует ли в вашей строке. Если это не так, и вам нужно применить специальную обработку, вам нужно добавить дополнительную логику. Я оставляю это как упражнение.