我對 Python 比較陌生,我需要幫助來使用 Python 的內置字典實作哈希表類,并將檔案的物件附加到哈希表并將物件的名稱存盤為鍵。它必須具有存盤和查找方法。
我有這個類和方法存盤和查找:
class HashtableDict:
def __init__(self, size):
self.dictionary = {}
self.size = size
def store(self, key, data):
self.dictionary[key] = data
def find(self, key):
if key in self.dictionary:
return True
return False
我為檔案創建了一個名為“Person”的類,并為屬性分配了一個索引,該索引是它們在檔案中的位置:
class Person:
def __init__(self, data):
cleanline = data.strip()
splitline = cleanline.split(",")
self.name = splitline[0]
self.number = splitline[1]
self.email = splitline[2]
現在我想讀取我的檔案(其中包含姓名、電話號碼和電子郵件地址),創建物件并將它們添加到以名稱為鍵的哈希表中。我試過這個:
with open("names.csv", "r") as names_file:
for line in names_file.readlines():
person = Person(line)
q = HashtableDict(1000)
q.store(key=person.name, data=person)
但是,當嘗試使用 find 方法搜索鍵(名稱)時,它似乎不起作用,這意味著將物件存盤到哈希表時出現問題。store 方法應該將資料作為值存盤在字典中,以 key(name) 作為鍵。如何解決這個問題?
uj5u.com熱心網友回復:
您正在 csv 中每行創建哈希表。
你只需要創建一次
q = HashtableDict(1000)
with open("names.csv", "r") as names_file:
for line in names_file.readlines():
person = Person(line)
q.store(key=person.name, data=person)
uj5u.com熱心網友回復:
您正在HashtableDict為 csv 中的每一行重新創建一個新的。
在整個回圈之后,您將留下最后一個創建HashtableDict為q. 它將只包含最后一個人的名字。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/311125.html
上一篇:替換XML路徑東西查詢
