Добрый день!
В Python, когда вы используете объекты в качестве ключей словаря, то они хранятся в словаре при помощи их хеш-значений и сравнения на равенство (через метод `__eq__`). Таким образом, для доступа к значению по ключу, вам нужно использовать сам объект, а не его хеш.
Ваш пример не позволит вам получить доступ к значению через хеш, так как словарь использует для поиска именно объект в памяти, а не его хеш. Если вы попытаетесь использовать хеш в качестве ключа в словаре, у вас возникнет ошибка, потому что хеш не является ключом, который следующим образом был сохранён в словаре.
Для того чтобы получить значение по уже известному значению, нужно будет провести "обратный поиск". Это можно сделать, создав новый словарь, где значением будет ваш исходный ключ. Это немного увеличит потребление памяти и время выполнения (так как вам нужно будет пройти весь словарь), но это один из возможных подходов.
Ниже приведён пример, как это сделать:
```python
class test:
def __init__(self):
self.key = ''
def __hash__(self):
return hash(self.key)
def __eq__(self, other):
return isinstance(other, test) and self.key == other.key
tmp_dict = {}
reverse_dict = {}
# Создание объекта и добавление в словарь
tmp = test()
tmp.key = "test_1"
tmp_dict[tmp] = "value by key 'test_1'"
reverse_dict["value by key 'test_1'"] = tmp # Обратный индекс
# Теперь мы можем получить объект по значению
value = "value by key 'test_1'"
if value in reverse_dict:
key_object = reverse_dict[value]
print(tmp_dict[key_object]) # Вывод: value by key 'test_1'
```
В этом коде мы создаём дополнительный `reverse_dict`, который позволяет нам осуществлять обратный поиск (значение -> ключ) по словарю.
Если у вас есть ещё вопросы, не стесняйтесь спрашивать!