Python hash() method



Python hash() method

Python hash() function is a built-in function and returns the hash value of an object if it has one. The hash value is an integer which is used to quickly compare dictionary keys while looking at a dictionary.

Syntax of Python hash() method:

Syntax : hash(obj)

 

Parameters :  obj : The object which we need to convert into hash.

Returns : Returns the hashed value if possible.

Properties of hash() function

  • Objects hashed using hash() are irreversible, leading to loss of information.
  • hash() returns hashed value only for immutable objects, hence can be used as an indicator to check for mutable/immutable objects.

Python hash() methods Examples

Example 1: Demonstrating working of hash()

# Python 3 code to demonstrate
# working of hash()
# initializing objects
int_val = 4
str_val = 'GeeksforGeeks'
flt_val = 24.56
# Printing the hash values.
# Notice Integer value doesn't change
# You'l have answer later in article.
print("The integer hash value is : " + str(hash(int_val)))
print("The string hash value is : " + str(hash(str_val)))
print("The float hash value is : " + str(hash(flt_val)))

Output:

The integer hash value is : 4
The string hash value is : -5570917502994512005
The float hash value is : 1291272085159665688

Example 2: Demonstrating property of hash()

# Python 3 code to demonstrate
# property of hash()
# initializing objects
# tuple are immutable
tuple_val = (1, 2, 3, 4, 5)
# list are mutable
list_val = [1, 2, 3, 4, 5]
# Printing the hash values.
# Notice exception when trying
# to convert mutable object
print("The tuple hash value is : " + str(hash(tuple_val)))
print("The list hash value is : " + str(hash(list_val)))

Output:

The tuple hash value is : 8315274433719620810

Exceptions : 

Traceback (most recent call last):
  File "/home/eb7e39084e3d151114ce5ed3e43babb8.py", line 15, in 
    print ("The list hash value is : " + str(hash(list_val)))
TypeError: unhashable type: 'list'

Example 3: hash() for immutable tuple object

# hash() for immutable tuple object
var = ('G','E','E','K')
print(hash(var))

Output:

5434435027328283763

Example 4: hash() on the mutable object

hash() method used by on immutable object, if we use this on a mutable object like list, set, dictionaries then it will generate an error.

l = [1, 2, 3, 4]
print(hash(l))

Output:

TypeError: unhashable type: 'list'

Example 5: hash() on a Custom Object

Here we will override the __hash()__ methods to call the hash(), and __eq__() method will check the equality of the two custom objects.

class Emp:
    def __init__(self, emp_name, id):
        self.emp_name = emp_name
        self.id = id
    def __eq__(self, other):
      
        # Equality Comparison between two objects
        return self.emp_name == other.emp_name and self.id == other.id
    def __hash__(self):
      
        # hash(custom_object)
        return hash((self.emp_name, self.id))
emp = Emp('Ragav', 12)
print("The hash is: %d" % hash(emp))
# We'll check if two objects with the same
# attribute values have the same hash
emp_copy = Emp('Ragav', 12)
print("The hash is: %d" % hash(emp_copy))

Output:

The hash is: -674930604243231063
The hash is: -674930604243231063

Last Updated on November 13, 2021 by admin

Leave a Reply

Your email address will not be published. Required fields are marked *

Recommended Blogs