python中哈希表的实现

python中哈希表的实现,python,hash,Python,Hash,我想用python实现哈希表。 由于散列的基本思想是将值存储在索引i中,其中i=hash_函数(key),因此我需要能够为列表/数组编制索引以存储值。但是,由于python中列表的大小用.append()扩展,hashList[i]语句将导致“列表分配索引超出范围” 使用具有固定大小的列表并对其进行索引是否存在扭曲?还是使用ctype数组 下面是代码的外观: class Hash(): length = 1000 array = [] def __setitem__(

我想用python实现哈希表。 由于散列的基本思想是将值存储在索引i中,其中i=hash_函数(key),因此我需要能够为列表/数组编制索引以存储值。但是,由于python中列表的大小用.append()扩展,hashList[i]语句将导致“列表分配索引超出范围”


使用具有固定大小的列表并对其进行索引是否存在扭曲?还是使用ctype数组

下面是代码的外观:

class Hash():
    length = 1000
    array = [] 

    def __setitem__(self, key, value):
        sum = 0  
        if key != None: 
            for letter in key: 
                sum = sum + ord(letter)
        self.array[sum % self.length] = self.length

使用具有固定大小的列表并对其进行索引是否存在扭曲

是,初始化数组 i、 e

然后,您可以继续在0-9999之间的任何索引中设置值

-

我应该使用ctype数组吗

Python lists are arrays

正如@mgilson所指出的,dict是python的内置哈希表,因此这个答案假设您这样做只是出于学术原因

有一种方法可以在python中创建一个固定大小的列表,其中填充了None值:

import itertools

hashSize = 100
myHashList = list(itertools.repeat(None, hashSize))

有关哈希表空间不足时如何操作的更多信息,请参阅。

我假设这是“学术性的”--python已经有一个很棒的内置哈希表,名为
dict
创建一个列表,从
listSize
many
None
s开始。然后,可以考虑一个索引:<代码>没有<代码>为空散列。bucket@mgilson根据使用情况,OP也可以考虑使用<代码> SET>代码>如果你要预先定义你的数组,<代码> [NON] * 1000 应该快很多。这个哈希表实现无法处理冲突。消耗O(大小)时间?@user1203631但在
添加功能中仍有足够的空间:谢谢,有没有一种方法可以像C++那样用O(1)构造哈希?
class HashTable():

    def __init__(self):
        self.size = 1000
        self.table = [None] * self.size

    def add(self, item):
        hashcode = self.hash(item)
        if hashcode >= self.size:
            # Resize the table.
            self.size *= 2
            # etc.
        else:
            self.table[hashcode] = item

    def hash(self, item):
        # Your implementation of a hash function.
class HashTable():

    def __init__(self):
        self.size = 1000
        self.table = [None] * self.size

    def add(self, item):
        hashcode = self.hash(item)
        if hashcode >= self.size:
            # Resize the table.
            self.size *= 2
            # etc.
        else:
            self.table[hashcode] = item

    def hash(self, item):
        # Your implementation of a hash function.