Хэш-карта в Python
Я хочу реализовать HashMap в Python. Я хочу попросить пользователя для ввода. в зависимости от его ввода я получаю некоторую информацию из HashMap. Если пользователь вводит ключ HashMap, я хотел бы получить соответствующее значение.
Как реализовать эту функциональность в Python?
HashMap<String,String> streetno=new HashMap<String,String>();
streetno.put("1", "Sachin Tendulkar");
streetno.put("2", "Dravid");
streetno.put("3","Sehwag");
streetno.put("4","Laxman");
streetno.put("5","Kohli")
7 ответов:
словарь Python - это встроенный тип, который поддерживает пар ключ-значение.
streetno = {"1":"Sachine Tendulkar", "2":"Dravid", "3":"Sehwag", "4":"Laxman","5":"Kohli"}
а также с помощью ключевого слова dict:
streetno = dict({"1":"Sachine Tendulkar", "2":"Dravid"})
или:
streetno = {} streetno["1"] = "Sachine Tendulkar"
все, что вы хотели (в то время вопрос был первоначально задан) был намек. Вот подсказка: в Python, вы можете использовать словари.
он встроен в Python. Смотрите словари.
на основе вашего примера:
streetno = {"1": "Sachine Tendulkar", "2": "Dravid", "3": "Sehwag", "4": "Laxman", "5": "Kohli" }
затем вы можете получить доступ к нему следующим образом:
sachine = streetno["1"]
также стоит упомянуть: он может использовать любой нематериальный тип данных в качестве ключа. То есть он может использовать кортеж, логическое значение или строку в качестве ключа.
streetno = { 1 : "Sachin Tendulkar", 2 : "Dravid", 3 : "Sehwag", 4 : "Laxman", 5 : "Kohli" }
и для получения значений:
name = streetno.get(3, "default value")
или
name = streetno[3]
это использование числа в качестве ключей, поставить кавычки вокруг чисел, чтобы использовать строки в качестве ключей.
хэш-карты встроены в Python, они называются словари:
streetno = {} #create a dictionary called streetno streetno["1"] = "Sachin Tendulkar" #assign value to key "1"
использование:
"1" in streetno #check if key "1" is in streetno streetno["1"] #get the value from key "1"
обратитесь к документации для получения дополнительной информации, например, встроенные методы и так далее. Они великолепны и очень распространены в программах Python (неудивительно).
вот реализация хэш-карты с использованием python Для простоты хэш-карта имеет фиксированный размер 16. Это можно легко изменить. Перефразирование выходит за рамки этого кода.
class Node: def __init__(self, key, value): self.key = key self.value = value self.next = None class HashMap: def __init__(self): self.store = [None for _ in range(16)] def get(self, key): index = hash(key) & 15 if self.store[index] is None: return None n = self.store[index] while True: if n.key == key: return n.value else: if n.next: n = n.next else: return None def put(self, key, value): nd = Node(key, value) index = hash(key) & 15 n = self.store[index] if n is None: self.store[index] = nd else: if n.key == key: n.value = value else: while n.next: if n.key == key: n.value = value return else: n = n.next n.next = nd hm = HashMap() hm.put("1", "sachin") hm.put("2", "sehwag") hm.put("3", "ganguly") hm.put("4", "srinath") hm.put("5", "kumble") hm.put("6", "dhoni") hm.put("7", "kohli") hm.put("8", "pandya") hm.put("9", "rohit") hm.put("10", "dhawan") hm.put("11", "shastri") hm.put("12", "manjarekar") hm.put("13", "gupta") hm.put("14", "agarkar") hm.put("15", "nehra") hm.put("16", "gawaskar") hm.put("17", "vengsarkar") print(hm.get("1")) print(hm.get("2")) print(hm.get("3")) print(hm.get("4")) print(hm.get("5")) print(hm.get("6")) print(hm.get("7")) print(hm.get("8")) print(hm.get("9")) print(hm.get("10")) print(hm.get("11")) print(hm.get("12")) print(hm.get("13")) print(hm.get("14")) print(hm.get("15")) print(hm.get("16")) print(hm.get("17"))
выход:
sachin sehwag ganguly srinath kumble dhoni kohli pandya rohit dhawan shastri manjarekar gupta agarkar nehra gawaskar vengsarkar
class HashMap: def __init__(self): self.size = 64 self.map = [None] * self.size def _get_hash(self, key): hash = 0 for char in str(key): hash += ord(char) return hash % self.size def add(self, key, value): key_hash = self._get_hash(key) key_value = [key, value] if self.map[key_hash] is None: self.map[key_hash] = list([key_value]) return True else: for pair in self.map[key_hash]: if pair[0] == key: pair[1] = value return True else: self.map[key_hash].append(list([key_value])) return True def get(self, key): key_hash = self._get_hash(key) if self.map[key_hash] is not None: for pair in self.map[key_hash]: if pair[0] == key: return pair[1] return None def delete(self, key): key_hash = self._get_hash(key) if self.map[key_hash] is None : return False for i in range(0, len(self.map[key_hash])): if self.map[key_hash][i][0] == key: self.map[key_hash].pop(i) return True def print(self): print('---Phonebook---') for item in self.map: if item is not None: print(str(item)) h = HashMap()