From f24ae20b448eded016d460aab0c7f22fc83a8f66 Mon Sep 17 00:00:00 2001 From: Mateus Camargo Date: Wed, 20 Apr 2022 13:35:19 -0300 Subject: [PATCH 1/2] Adicionando estrutura de HashTable --- src/python/hash_table.py | 86 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 86 insertions(+) create mode 100644 src/python/hash_table.py diff --git a/src/python/hash_table.py b/src/python/hash_table.py new file mode 100644 index 00000000..388abfd8 --- /dev/null +++ b/src/python/hash_table.py @@ -0,0 +1,86 @@ +""" +Implementação de uma hashtable +""" + +import traceback + + +class HashTable: + + def __init__(self, size=10): + self.size = size + self.tables = [[] for _ in range(self.size)] + + def hashing(self, key): + return hash(key) % self.size + + def __setitem__(self, key, value): + hash_key = self.hashing(key) + bucket = self.tables[hash_key] + if bucket: + for index, k_value in enumerate(bucket): + k, v = k_value + if key == k: + bucket[index] = key, value + return + bucket.append((key, value)) + + def __getitem__(self, key): + hash_key = self.hashing(key) + bucket = self.tables[hash_key] + if bucket: + for index, item in enumerate(bucket): + k, value = item + if key == k: + return value + raise KeyError(key) + + def __delitem__(self, key): + hash_key = self.hashing(key) + bucket = self.tables[hash_key] + if bucket: + for index, item in enumerate(bucket): + k, value = item + if key == k: + del bucket[index] + return + raise KeyError(key) + + +if __name__ == '__main__': + + # Cria as tabelas de dispersão + hash_table = HashTable() + + # Insere as chaves e valores + for i in range(143): + hash_table[i] = hex(round(i * 23)) + + # Deletar item + print("Deletar chave 0 de valor: ", hash_table[0]) + del hash_table[0] + + # Procurar item + print('Valor da chave 23: ', hash_table[23]) + + # Subscrever um valor de uma chave + hash_table[1] = 'TESTE DE SUBSCREVER' + + # Exibir dispersão + for i, table in enumerate(hash_table.tables): + print("Table {index} -> {table} Len -> {len}". + format(index=i + 1, + table=table, + len=len(table))) + + # Tentar deletar uma chave que não existe + try: + del hash_table[493084] + except KeyError: + print(traceback.print_exc()) + + # Tentar acessar uma chave que não existe + try: + print(hash_table[493084]) + except KeyError: + print(traceback.print_exc()) From ec7f5cc0d46d1662c37d987c054e524aaeb93a43 Mon Sep 17 00:00:00 2001 From: Mateus Camargo Date: Wed, 20 Apr 2022 13:35:40 -0300 Subject: [PATCH 2/2] Alterando README --- README.md | 53 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) diff --git a/README.md b/README.md index 67750c61..f25896d0 100644 --- a/README.md +++ b/README.md @@ -2128,6 +2128,59 @@ Com o objetivo de alcançar uma abrangência maior e encorajar novas pessoas a c + + Hash Table + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +