k in d вместо k in d.keys()
Мелочь, за которой стоит понимание, как словарь ищет.
Как короче
if klyuch in slovar.keys(): # длинно
if klyuch in slovar: # так же верно и короче
Перебор словаря по умолчанию идёт по ключам, поэтому .keys() не
нужен.
Почему это не только про длину
Проверка по словарю мгновенна: он ищет по хешу, а не перебором. Время не зависит от размера — хоть десять ключей, хоть миллион.
Проверка по списку просматривает его целиком:
if imya in spisok_imen: # просмотр всего списка
if imya in mnozhestvo_imen: # мгновенно
Это самая дешёвая оптимизация в Python: поменять список на множество или словарь там, где по нему только ищут.
Когда это заметно
На сотне значений — никогда. На десяти тысячах проверок по списку из десяти тысяч элементов — разница между секундой и минутой.
Считать надо не размер данных, а число проверок, умноженное на размер.
Три способа обойти словарь
for klyuch in slovar: # ключи
for znachenie in slovar.values(): # значения
for klyuch, znachenie in slovar.items(): # пары
Самая частая ошибка новичка — sum(slovar): это сложит ключи.