我正在尋找列表中搜索項目的最快方法。正如我發現在Python中,最好使用set
來搜索項目,而不是使用list
。所以我用set
替換了list
。但是,set
中的所有項目都是一個對象。我想搜索是否有對象ID等於我想找到的ID。如果是,則返回該對象。Python使用集合的最快搜索算法
我可以在一個簡單的for-loop中做到這一點,但我不知道如果我仍然循環所有元素來找到該項目,怎麼可以改進設置。
def find(allItems, id):
for item in allItems:
if (item.getId() == id):
return item
from sets import Set
allItems = Set()
allItems.add(itemObj)
find(allItems, 1)
使用Python字典:'allItems = {}'。您可以通過'allItems [item.getId()] = item'添加一個項目。您可以通過'allItems [id]'快速查找它們的ID。 –
你有沒有在['sets'](https://docs.python.org/2/library/sets.html)上看到大的*「從版本2.6開始棄用」*? 'set'是一個內置的類。但鑑於你的項目必須已經實現了'__hash__'和'__eq__'來放置在一個集合中,所以你不清楚爲什麼你需要明確檢查每個人的ID。你說得對,如果你不能使用散列,它不會比列表更有效 – jonrsharpe
那麼你能展示如何使用字典來搜索它嗎? – androidnewbie