2017-05-01 42 views
0

我想實現一個鏈接的哈希表。 (m = 191) 但是當我測試我的代碼時,表格顯示爲空!哈希表是空的

table = [[] for x in range(191)] 

def hash_function (k): 
    return k % 191 

def insert (table,key): 
    table[hash_function(key)].append((hash_function(key),key)) 

with open("test.txt", "r") as file: 
    for seq in file: 
     seq_int= [ord(c) for c in seq] 
     int = seq_int[0] * 128 ** 3 \ 
      + seq_int[1] * 128 ** 2 \ 
      + seq_int[2] * 128 + seq_int[3] 
     insert(table,int) 

print table 

我讀從包含長度爲4

+1

首先,調用一個變量'int'是**非常糟糕**主意,因爲'INT()'是一個內置的功能。第二,如果關鍵字是列表索引,那麼在列表中插入一個鍵值的元組到什麼地步?第三,'table'是一個全局變量,將它作爲參數傳遞給'hash_function'沒有意義。 – DyZ

+0

我運行了你的代碼,'table'不是空的。 –

+0

運行insert()後它沒有顯示任何內容。 – user3085433

回答

0

的1000個字(每行一個)一個文本文件中的字符串這可能不是正是你要找的,但你應該看看在未來使用defaultdict(例如,乾淨地構建詞典,其中值是您正在構建的列表以及該列表應該在第一次訪問時初始化爲空列表的位置)。

https://docs.python.org/2/library/collections.html#collections.defaultdict