Data Structures Explained with Python

Hash Tables (Dictionaries) in Python

A hash table, also known as a hash map, is a data structure that implements an associative array abstract data type, a structure that can map keys to values. A hash table uses a hash function to compute an index, also called a hash code, into an array of buckets or slots, from which the desired value can be found.

In Python, the built-in dict type is a highly optimized implementation of a hash table.

Key Concepts:

Collision Resolution:

When a collision occurs, the hash table must have a way to store and retrieve the multiple items that map to the same slot. Common techniques include:

Python Dictionaries (dict)

Python'''s dict provides a powerful and easy-to-use hash table implementation. It handles hash function computation, resizing, and collision resolution internally.

Basic Dictionary Operations:


# Creating a dictionary
my_dict = {}
student = {"name": "Alice", "age": 25, "major": "Computer Science"}
print(f"Initial student dict: {student}")

# Adding or updating elements
student["grade"] = "A"  # Add new key-value pair
student["age"] = 26     # Update existing value for key "age"
print(f"Updated student dict: {student}")

# Accessing elements
print(f"Student'''s name: {student["name"]}")
# print(student["id"]) # Would raise KeyError if "id" doesn'''t exist

# Safe access using .get()
major = student.get("major")
print(f"Student'''s major: {major}")
non_existent_key = student.get("id", "Not specified") # Returns default if key not found
print(f"Student'''s ID: {non_existent_key}")

# Deleting elements
removed_grade = student.pop("grade")
print(f"Removed grade: {removed_grade}")
print(f"Dict after pop: {student}")

# Using del keyword
del student["major"]
print(f"Dict after del '''major''': {student}")

# Checking for key existence
if "name" in student:
    print("'''name''' is a key in the dictionary.")

if "country" not in student:
    print("'''country''' is not a key.")

# Iterating through a dictionary
print("\nIterating through keys:")
for key in student:
    print(f"Key: {key}, Value: {student[key]}")

print("\nIterating through key-value pairs (items):")
for key, value in student.items():
    print(f"Key: {key}, Value: {value}")

print("\nIterating through values:")
for value in student.values():
    print(f"Value: {value}")

# Dictionary length
print(f"\nNumber of items in dictionary: {len(student)}")
        

Advantages of Hash Tables:

Disadvantages of Hash Tables:

Common Use Cases:

Hash tables, and Python'''s dictionaries, are one of the most useful and versatile data structures in programming due to their efficiency and ease of use.