input: Write a function to implement a hash table in Python that supports insert, delete, and retrieve operations. If the given key does not exist in the table for the retrieve operation, return None. If the given key does not exist in the table for the delete operation, do nothing.
  class HashTable:
      def __init__(self):
          self.table = [[] for _ in range(256)]
   
      def insert(self, key, value):
          h = hash(key) % 256
          for i, kv in enumerate(self.table[h]):
              if kv[0] == key:
                  self.table[h][i] = (key, value)
                  return
          self.table[h].append((key, value))
   
      def retrieve(self, key):
          h = hash(key) % 256
          for kv in self.table[h]:
              if kv[0] == key:
                  return kv[1]
          return None
   
      def delete(self, key):
          h = hash(key) % 256
          for i, kv in enumerate(self.table[h]):
              if kv[0] == key:
                  del self.table[h][i]
                  return
  
  # Test cases
  assert HashTable().retrieve("nonexistent") == None
  assert HashTable().delete("nonexistent") == None
  hash_table = HashTable()
  hash_table.insert("key1", "value1")
  hash_table.insert("key2", "value2")
  assert hash_table.retrieve("key1") == "value1"
  assert hash_table.retrieve("key2") == "value2"
  hash_table.delete("key1")
  assert hash_table.retrieve("key1") == None
output: 
  class HashTable:
      def __init__(self):
          self.table = [[] for _ in range(256)]
   
      def insert(self, key, value):
          h = hash(key) % 256
          for i, kv in enumerate(self.table[h]):
              if kv[0] == key:
                  self.table[h][i] = (key, value)
                  return
          self.table[h].append((key, value))
   
      def retrieve(self, key):
          h = hash(key) % 256
          for kv in self.table[h]:
              if kv[0] == key:
                  return kv[1]
          return None
   
      def delete(self, key):
          h = hash(key) % 256
          for i, kv in enumerate(self.table[h]):
              if kv[0] == key:
                  del self.table[h][i]
                  return
  