Skip to content

An exercise to learn about hash tables, unit tests, TDD, Python packages, and Docker

Notifications You must be signed in to change notification settings

nicolerg/python-hashtable

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 

Repository files navigation

HashTable

This repository provides a custom implementation of a hash table in Python, created by following this tutorial written by Bartosz Zaczyński. The HashTable class replicates many methods from Python dictionaries, including HashTable.clear() and HashTable.update().

Get Started

This repository provides two ways to use the HashTable class:

Usage

from hashtable_nicolerg.hashtable import HashTable # not required if using Docker image

# Create an instance of HashTable with initial size 10
# and loading factor threshold 0.5, meaning the HashTable
# will be resized to have 2x capacity whenever the number of 
# key-value pairs is at least half the current capacity
hash_table = HashTable(capacity=10, load_factor_threshold=0.5)

hash_table["blue"] = "sea"              # Add key-value pair "blue":"sea"
hash_table["list"] = [1,2,3]            # Add key-value pair with a mutable value 
len(hash_table)                         # Return number of key-value pairs
hash_table.capacity                     # Return current capacity
hash_table.load_factor                  # Return current load factor
hash_table.keys                         # Return set of keys
hash_table.values                       # Return list of values 
hash_table.pairs                        # Return list of key-value pairs
del hash_table["list"]                  # Delete key-value pair for specified key
hash_table.update({"blue":"0000FF"})    # Update value for key "blue" using a dictionary
hash_table["blue"]                      # Return value for key "blue"
hash_table.clear()                      # Remove all key-value pairs 

Motivation

Developing this repository reinforced knowledge in the following areas:

Releases

No releases published

Packages

No packages published