首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python中的散列表

Python中的散列表
EN

Code Review用户
提问于 2021-06-28 13:39:10
回答 1查看 64关注 0票数 1

我只想知道你对那个代码的看法!:)

代码语言:javascript
复制
import random

class Error(Exception):
    def __init__(self, error=None):
        self.error = error

    def __str__(self):
        return str(self.error)

class HashTable(object):

    def __init__(self):
        self.length = 20
        self.keys = []
        self.table = [[] for _ in range(self.length)]

    def __len__(self):
        return self.length

    def __setitem__(self, key, value):
        self.keys.append(key)
        hashed_key = self._hash(key)
        self.table[hashed_key].append((value))  #Wartosc jest dodawana do listy pod hashowanym indeksem
    
    def _hash(self, key) :
        return hash(key) % self.length
    
    def show_list(self):
        return self.table
    
    def __getitem__(self, key):
        for el in self.table[self._hash(key)]:
            if el[0] == key:
                return el[1]
            
    def __delitem__(self, key):
        for el in self.table[self._hash(key)]:
            if el[0] == key:
                self.table[self._hash(key)].remove(el)
            
    def __iter__(self):
        def Generator(data):
            mylist = [_ for _ in data]
            for i in mylist:
                yield i
        return Generator(self.table)
                    
L = HashTable()
content = []
with open("song.txt", 'r', encoding = 'utf8') as travis:
    for line in travis:
        for word in line.split():
            content.append(word)

for c in content:
    L[c] = c
    
for x in L:
    print(x)

我对任何技巧和如何改进这个建议都会很有兴趣!:D

EN

回答 1

Code Review用户

发布于 2021-09-01 09:18:47

我的观点是,在请求代码评审之前,您应该更好地进行测试。

代码语言:javascript
复制
line = " #Wartosc jest dodawana do listy pod hashowanym indeksem"
for word in line.split():
    content.append(word)
for c in content:
    L[c] = c
print(L["jest"])

在每个函数中放入一个print语句,例如print('__getitem__ ran')。然后继续修改您的测试代码,直到看到它们。现在,您没有使用所有的方法。

编辑:而且,这并不是真正的东西,我将代码审查一旦测试。正确的审查是将其替换为:

代码语言:javascript
复制
HashTable = dict

可读性和效率都比你的好!

票数 1
EN
页面原文内容由Code Review提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://codereview.stackexchange.com/questions/263552

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档