我正在建立一個包含整數鍵和列表值的字典。爲這本字典增加值似乎是一個真正的瓶頸,但我想知道是否有某種方法可以加速我的代碼。Python:使用列表值添加到字典的最佳方式
class myClass():
def __init__(self):
self.d = defaultdict(list)
def addValue(self, index, value):
self.d[index].append(value)
這真的是這樣做的最佳方式?我並不關心值的順序,所以也許有一個更合適的數據結構,並有更快的附加值。然後,'追加'似乎不是主要問題,因爲如果我簡單地追加到一個空列表中,代碼要快得多。我猜這是以前存儲的列表大部分時間的加載?
我發現,這個問題是不是在快譯通,但列表中的append(雖然我在原來的職位,對此我表示歉意另有要求)。這個問題是由於Python的垃圾收集器中的一個錯誤引起的,在this other question上有很好的解釋。在添加所有值然後重新啓用它之前禁用gc,將極大地加速該過程!
將項目添加到列表並獲取對象或字典中的值都是不花時間的。爲了加速程序,您可以通過分析找到瓶頸,而不是通過更改隨機代碼段。 –
將項目映射到現有密鑰的速度明顯快於將值添加到新密鑰? –
我剛剛發現問題不在字典中,但在列表中追加(儘管我在原始文章中聲明瞭其他內容,對此我表示歉意)。然後我在http://stackoverflow.com/questions/2473783/is-there-a-way-to-circumvent-python-list-append-becoming-progressively-slower上找到了我的問題的答案。由於我是這個網站的新手,在這種情況下,我不知道標準程序是什麼:我應該刪除原始文章嗎?或者添加上面的細節並回復帖子? – niefpaarschoenen