Предположим, что объект a
имеет очень дорогую хеш-функцию, и я хочу запросить a
в разных диктовках или наборах.Если я сделаю это наивно:
d1_res = d1[a]
d2_res = d2[a]
Мне придется сделать два хэша.Я хочу что-то вроде:
РЕДАКТИРОВАТЬ: следующий код в исходном вопросе является неправильным!
hashvalue = hash(a)
d1_res = d1.getitem(a, hashvalue=hash)
d2_res = d2.getitem(a, hashvalue=hash)
РЕДАКТИРОВАТЬ: Это правильный примеркод
hashvalue = hash(a)
d1_res = d1.getitem(a, hashvalue=hashvalue)
d2_res = d2.getitem(a, hashvalue=hashvalue)
Таким образом, мне нужно сделать только один хэш.Есть ли способ для этого?Или существует какой-либо механизм Python, который предотвращает такой интерфейс?
РЕДАКТИРОВАТЬ: важно следующее сообщение
Кажется, что простое решение кэширует результат хеширования в __hash__
метод, но мой пример здесь упрощенный.На самом деле, хеш-функция в моем реальном случае не дорогая (просто int hash).Но хеширование выполняется много раз, и я хочу сократить расходы.Я пишу расширение C / C ++, поэтому я ищу любое возможное улучшение производительности.
Заранее спасибо.