다양한 방법으로 해시맵 구현
14382 단어 challengepythoncomputerscience
문제 설명: get, set 및 remove 메소드를 사용하여 해시 맵을 구현하십시오.
난이도: 쉬움
테스트 케이스
연산
해시 함수
함수 가져오기
기능 설정
기능 제거
시간 및 공간 복잡성
암호
class Item(object):
def __init__(self, key, value):
self.key = key
self.value = value
class HashTable(object):
def __init__(self, size):
self.size = size
self.table = [[] for _ in range(self.size)]
def hashFunction(self, key):
return key % self.size
def set(self, key, value):
hashIndex = self.hashFunction(key)
for item in self.table[hashIndex]:
if item.key == key:
item.value = value
return
self.table[hashIndex].append(Item(key, value))
def get(self, key):
hashIndex = self.hashFunction(key)
for item in self.table[hashIndex]:
if item.key == key:
return item.value
raise KeyError('Key not found')
def remove(self, key):
hashIndex = self.hashFunction(key)
for index, item in enumerate(self.table[hashIndex]):
if item.key == key:
del self.table[hashIndex][index]
return
raise KeyError('Key not found')
단위 테스트
import unittest
from hashmap import HashTable
class TestHashMap(unittest.TestCase):
def test_end_to_end(self):
hash_table = HashTable(10)
print("Test: get on an empty hash table index")
self.assertRaises(KeyError, hash_table.get, 0)
print("Test: set on an empty hash table index")
hash_table.set(0, 'first')
self.assertEqual(hash_table.get(0), 'first')
hash_table.set(1, 'second')
self.assertEqual(hash_table.get(1), 'second')
print("Test: set on a non empty hash table index")
hash_table.set(10, 'third')
self.assertEqual(hash_table.get(0), 'first')
self.assertEqual(hash_table.get(10), 'third')
print("Test: set on a key that already exists")
hash_table.set(10, 'fourth')
self.assertEqual(hash_table.get(0), 'first')
self.assertEqual(hash_table.get(10), 'fourth')
print("Test: remove on a key that already exists")
hash_table.remove(10)
self.assertEqual(hash_table.get(0), 'first')
self.assertRaises(KeyError, hash_table.get, 10)
print("Test: remove on a key that doesn't exist")
self.assertRaises(KeyError, hash_table.remove, -1)
print('Success: test_end_to_end')
def main():
test = TestHashMap()
test.test_end_to_end()
if __name__ == "__main__":
main()
Github repo
해피코딩!! 🌟
Reference
이 문제에 관하여(다양한 방법으로 해시맵 구현), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/codewithml/implement-a-hashmap-with-its-various-methods-33pn텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)