Python의 해시 맵
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")
Python 사전은 키와 값의 쌍을 지원하는 기본 제공 유형입니다.
streetno = {"1": "Sachin Tendulkar", "2": "Dravid", "3": "Sehwag", "4": "Laxman", "5": "Kohli"}
dict 키워드를 사용합니다.
streetno = dict({"1": "Sachin Tendulkar", "2": "Dravid"})
또는 다음과 같이 입력합니다.
streetno = {}
streetno["1"] = "Sachin 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()
이 경우 Python Counter도 좋은 옵션입니다.
from collections import Counter
counter = Counter(["Sachin Tendulkar", "Sachin Tendulkar", "other things"])
print(counter)
그러면 목록에 있는 각 요소의 카운트가 포함된 dict가 반환됩니다.
Counter({'Sachin Tendulkar': 2, 'other things': 1})
python에서는 사전을 사용합니다.
이것은 비단뱀에서 매우 중요한 종류이며 자주 사용된다.
다음 방법으로 쉽게 만들 수 있습니다.
name = {}
사전에는 여러 가지 방법이 있습니다.
# add entries:
>>> name['first'] = 'John'
>>> name['second'] = 'Doe'
>>> name
{'first': 'John', 'second': 'Doe'}
# you can store all objects and datatypes as value in a dictionary
# as key you can use all objects and datatypes that are hashable
>>> name['list'] = ['list', 'inside', 'dict']
>>> name[1] = 1
>>> name
{'first': 'John', 'second': 'Doe', 1: 1, 'list': ['list', 'inside', 'dict']}
딕트 순서는 변경할 수 없습니다.
이를 구현하려면 Python 사전이 가장 좋습니다.다음 사전을 만들 수 있습니다.<key,value>
쌍:
d = {"1": "Sachin Tendulkar", "2": "Dravid", "3": "Sehwag", "4": "Laxman", "5": "Kohli"}
특정 키의 값을 추출하기 위해 직접 사용할 수 있습니다.d[key]
:
name = d["1"] # The value of name would be "Sachin Tendulkar" here
언급URL : https://stackoverflow.com/questions/8703496/hash-map-in-python
'programing' 카테고리의 다른 글
'다른 테이블을 스토리지 엔진에 커밋' 상태에서 쿼리를 롤백할 수 있습니까? (0) | 2022.09.21 |
---|---|
MySQL 명령줄 클라이언트의 자동 완성 (0) | 2022.09.21 |
ProceedingJoinPoint에서 메서드의 주석 값을 가져오려면 어떻게 해야 합니까? (0) | 2022.09.21 |
MariaDB 구문에 대한 SQL 구문 확인 (0) | 2022.09.21 |
상위 폴더에서 모듈 가져오기 (0) | 2022.09.19 |