我有一個Python應用程序執行關聯大型文件。它將這些存儲在字典中。根據輸入文件的不同,這個字典可能會變得非常大,直到它不再適合內存。這會導致系統掛起,所以我想防止這種情況發生。Python:從字典中刪除就地
我的想法是,總是有它不是爲以後處理等等相關關係。這些可以刪除,而不會改變整體結果太多。當我沒有太多內存的時候,我想這樣做。
因此,我會定期檢查可用內存。如果它變得太少(比如說小於300MB),如果刪除不相關的關聯以獲得更多的空間。這就是理論。
現在我的問題:在Python中,你不能從一個字典,而迭代它刪除。但這正是我需要做的,因爲在刪除之前我必須檢查每個字典條目的相關性。
通常的解決辦法是創建字典的副本迭代,或創建一個包含只是我想保留元素的新字典。但是,字典可能會有幾GB大,剩下的可用內存只有幾百MB。所以我不能複製,因爲這可能會導致系統掛起。
在這裏,我卡住了。任何人都可以想出一個更好的方法來實現我所需要的嗎?如果在迭代過程中就地刪除字典條目是絕對不可能的,那麼可能有一些解決方法可以救我?
在此先感謝!
EDIT - 有關的dict一些更多的信息:
鍵是元組指定由該數據是相關的值。
這些值是包含相關日期的字典。這些字符串的鍵總是字符串,值是數字(int或float)。
我通過在價值http://stardict.sourceforge.net/Dictionaries.php下載與某個閾值進行比較的數值檢查相關性。如果這些值低於閾值,則可以放棄特定的相關性。
什麼是字典值類型,以及如何檢查相關性? – bereal
我已將此信息添加到原始帖子。 – j0ker
這些價值詞典中的鍵是否已修復?如果是這樣,你是否考慮過內存分貝而不是字典,比如sqlite? – bereal