admiral
Имеется словарь с типом dict, в нем хранится куча элементов с разными типами.
А, ну да, словарь у тебя может быть. Значит, там не строки, а другие объекты.
admiral
Я так понимаю питон определяет равенство объектов по их айдишнику.
Во-первых, не так он определяет:
>>> s1 = 'a' * 100
>>> s2 = 'a' * 100
>>> id(s1), id(s2)
(3075959968, 3075960096)
>>> s1 == s2
True
>>>
Во-вторых, у тебя там написано в сообщении об ошибке, в чём проблема.
Строка сравнивается не со строкой, а с каким-то другим объектом, у которого определён метод __eq__. Для сравнения вызывается этот метод, который ищет какие-то внутренности в передаваемом ему объекте (в данном случае в строке). Скорее всего, он ожидает получить такой же объект, как и он сам.
Что можешь сделать: вставь
print(type(flags[i]), type(FLAGS[i]))
перед сравнением. Когда покажет тип объекта, найди определение класса.