Если это одноразовая задача - то проще руками выписать. Можно воспользоваться ABBYY Screenshot Reader. Можно попиксельно сравнить с шаблонами, если шрифт всегда один и тот же. Если всё же надо много и именно распознавать - то OpenCV + нейросеть.
artem78, своё решение я предложил. Даже если автор не будет гонять код по миллиону раз в секунду, это не повод использовать плохие практики, если можно использовать хорошие. Кроме того, такой код получается совершенно немасштабируемым.
Олег Петров, правильно, потому что функцию convert() я определил в первом примере. Перенесите её во второй. Я просто не стал два раза писать одно и то же.
pcdesign, зависит от задачи. Элементы в словаре не обязательно должны быть отсортированы, но может быть необходимость сохранения их порядка. Тогда SortedDict не подойдёт, а OrderedDict - самое то.
pcdesign,
- C itemgetter оно не работало и не может работать в принципе, так что тайминг не имеет значения.
- Сделайте замену func = cmp_to_key(locale.strcoll), чтобы не вызывать две вложенные функции каждый раз.
- Используйте модуль sortedcontainers, он очень крутой и быстрый.
- Всё же имеет смысл преобразовать структуру данных в словарь и работать с ним.
Про конструкцию в P.S. - надо проверять, что ввели. Потому что если, к примеру, a = "1, 2, 3" или a = "1 2 3", то результат не будет соответствовать ожидаемому. Также если ключи на вводе повторяются - надо предусмотреть обработку.