password funcion python hash hashmap key hashcode

funcion - python hash()



Hash rĂ¡pido para 2 coordenadas donde el orden no importa? (1)

¿Hay una fórmula que es un hash de una manera para 2 coordenadas (a, b) y (c, d) a un entero donde a, b, c y d son positivos? El orden no importa aquí, entonces la fórmula debería dar los mismos resultados cuando se le da (a, b), (c, d) y (c, d), (a, b) . El orden de los números reales en cada punto de coordenadas importa ( (a, b) no es lo mismo que (b, a) ). La velocidad es la clave aquí, la fórmula debe ser rápida y tener O (1) complejidad.

Nota: lo que estoy haciendo ahora es ordenar las dos coordenadas usando el edificio de Python en orden, y luego usarlas como claves en el diccionario integrado de Python (por lo tanto, hash incorporado). Necesito una forma más rápida de hacer esto para que yo pueda dividir las dos coordenadas en un entero yo mismo.


Puede usar el hash () de un frozenset para esto.

>>> hash(frozenset([(10, 20), (11, 22)])) 1735850283064117985 >>> hash(frozenset([(11, 22), (10, 20)])) 1735850283064117985

Los Frozensets se diseñaron específicamente para este tipo de casos de uso (es decir, los conjuntos congelados son colecciones intrínsecamente desordenadas que son inmutables y fáciles de manipular).

Espero que esta respuesta lleve tu derecho a lo que necesitabas :-)