0
我正在寫書電話的二叉搜索樹。問題是當我試圖編寫主代碼時。我試圖使用字典數據結構,但我無法弄清楚如何將聯繫人名稱作爲關鍵字。我想寫任何名字,並把電話號碼作爲一個值。如何在字典結構中傳遞名稱作爲關鍵字?
它給了我一個錯誤
Traceback (most recent call last):
File "FastSort.py", line 22, in <module>
print(binarySearch(phonebook, "John"))
File "FastSort.py", line 8, in binarySearch
if alist[midpoint] == item:
KeyError: 1
這是一個代碼
def binarySearch(alist, item):
first = 0
last = len(alist)-1
found = False
while first<=last and not found:
midpoint = (first + last)//2
if alist[midpoint] == item:
found = True
else:
if item < alist[midpoint]:
last = midpoint-1
else:
first = midpoint+1
return found
phonebook = {}
phonebook["John"] = 938477566
phonebook["Jack"] = 938377264
phonebook["Jill"] = 947662781
print(binarySearch(phonebook, "John"))
print(binarySearch(phonebook, "Jack"))
您應該使用二叉搜索的排序列表,而不是字典。 – sberry
爲什麼你需要一個特殊的字典查找功能?他們已經是O(1)。 – TigerhawkT3
'phonebook'有三個可能的鍵:'John','Jack','Jill';當你調用'alist [中點]','中點'是一個數字(在本例中爲1)時,你正在調用'phonebook [1]',它不存在,因爲它不是三個現有密鑰之一 –