Найти - Пользователи
Полная версия: Отслеживание изменений в словаре
Начало » Python для новичков » Отслеживание изменений в словаре
1 2
admiral
Чего тут непонятного?
Имеется словарь с типом dict, в нем хранится куча элементов с разными типами.
Вот когда строковый элемент меняется - выскакивает ошибка. Я так понимаю питон определяет равенство объектов по их айдишнику. У строки нет айдишника, вот и выскакивает исключение.
py.user.next
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]))
перед сравнением. Когда покажет тип объекта, найди определение класса.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB