      "                return\n",
      "        self.table[hash_index].append(Item(key, value))\n",
      "\n",
      "    def get(self, key):\n",
      "        hash_index = self.hash_function(key)\n",
      "        for item in self.table[hash_index]:\n",
      "            if item.key == key:\n",
      "                return item.value\n",
      "        raise KeyError('Key not found')\n",
      "\n",
 
</s> remove     "        hash_index = self.hash_function(key)\n",
 </s> add     "        hash_index = self._hash_function(key)\n", </s> remove     "        hash_index = self.hash_function(key)\n",
 </s> add     "        hash_index = self._hash_function(key)\n", </s> remove     "    def hash_function(self, key):\n",
 </s> add     "    def _hash_function(self, key):\n", </s> remove     "    def hash_function(self, key):\n",
 </s> add     "    def _hash_function(self, key):\n",
    "        hash_index = self._hash_function(key)\n",
      "                return\n",
      "        self.table[hash_index].append(Item(key, value))\n",
      "\n",
      "    def get(self, key):\n",
    "        hash_index = self._hash_function(key)\n",
      "        for item in self.table[hash_index]:\n",
      "            if item.key == key:\n",
      "                return item.value\n",
      "        raise KeyError('Key not found')\n",
      "\n",
keep keep keep keep replace keep keep keep keep keep
 Update hash map challenge (#126)

Make hash_function private. 
arrays_strings/hash_map/hash_map_solution.ipynb