Генератор генерации хеш-функций в python

Я ищу генератор семейств хэш-функций, который мог бы генерировать семейство хеш-функций, заданных набором параметров. До сих пор я не нашел такого генератора. Есть ли способ сделать это с пакетом hashlib ?

Например, я хотел бы сделать что-то вроде:

 h1 = hash_function(1) h2 = hash_function(2) ... 

и h1 и h2 будут различными хэш-функциями.

Для тех из вас, кто может знать об этом, я пытаюсь реализовать алгоритм минимального хэширования на очень большом наборе данных.

В принципе, у меня есть очень большой набор функций (от 100 миллионов до 1 миллиарда) для данного документа, и мне нужно создать от 1000 до 10000 различных случайных перестановок для этого набора функций.

Я НЕ хочу создавать случайные перестановки явно, поэтому метод, который я хотел бы использовать в следующем:

  1. сгенерируем хэш-функцию h и рассмотрим, что для двух индексов r и s
  2. r появляется перед s в перестановке, если h(r) < h(s) и делает это для 100 – 1000 различных хеш-функций.

Есть ли какие-то известные библиотеки, которые я, возможно, пропустил? Или любой стандартный способ генерации семейств хеш-функций с питоном, о котором вы могли бы знать?

2 Solutions collect form web for “Генератор генерации хеш-функций в python”

Я бы просто сделал что-то вроде (если вам не нужна безопасность потоков – не сложно изменить, если вам нужна безопасность потоков – и предполагается 32-разрядная версия Python):

 import random _memomask = {} def hash_function(n): mask = _memomask.get(n) if mask is None: random.seed(n) mask = _memomask[n] = random.getrandbits(32) def myhash(x): return hash(x) ^ mask return myhash 

Вы должны использовать универсальное хеширование. Мой ответ и код можно найти здесь: https://stackoverflow.com/a/25104050/207661

 
Interesting Posts for Van-Lav

Как удалить скобки из строки python?

Почему некоторые из них включают строки в Django и другие имена переменных?

Отношение сеанса и соединения SQLAlchemy

Как добавить значения в ключи в словаре внутри цикла?

Рисование лица Pacman в Tkinter

Python: ошибки при сохранении и загрузке объектов с помощью модуля рассола

Как перечислять уникальные пути, достигающие верхнего правого (h8) квадрата, начиная с нижнего левого (a1) квадрата шахматной доски, учитывая некоторые правила перемещения?

Невозможно импортировать имя из X в python

Операции с цифрами выглядят медленными

Быстрый способ возврата списка без определенного элемента в Python

Как импортировать json из файла в облачном хранилище в Bigquery

Python: невозможно вызвать дескриптор родительского класса с помощью функции super ()

Каковы некоторые хорошие способы установки пути в поддерживаемом Multi-OS скрипте Python

Веб-службы Amazon: python или ruby?

Запись XML-файла с использованием библиотеки lxml в Python

Python - лучший язык программирования в мире.