2010-01-14 58 views
3

在磁盤上存儲Python字典的最有效方法是什麼?我現在唯一知道的方法是純文本和pickle模塊。在磁盤上存儲Python字典的有效方法?

編輯:對不起,不太清楚。通過高效我意味着最快的執行速度。字典將包含可變對象,這些可變對象將保存要解析和修改的信息。

+1

這很大程度上取決於您想要如何使用字典。如你所說的問題,沒有一個好的答案。 – Omnifarious 2010-01-14 22:28:29

+0

相比最快的執行速度是什麼?你是否在Python字典中重新實現數據庫?字典有多大?如果條目數足夠多,SQLite或BDB可能會更快。 – jmucchiello 2010-01-14 22:59:12

+0

密鑰的數量將以千計。與具有這個數值的數據庫相比,字典在性能上會受到明顯影響嗎? – linkmaster03 2010-01-15 01:23:39

回答

8

shelve是相當不錯的,以及

this persistent dictionary recipe

的,讓您的對象與存儲同步的方便的方法,還有的ORM SQLAlchemy爲Python

如果你只需要一種方法來存儲字符串值由一些關鍵字,theres dbm.ndbm和dbm.gnu模塊。

,如果你需要一個超高效的分佈式鍵值緩存,像memcached for python ......

+0

除非你需要超快的性能,否則'shelve'通常是你所需要的,在這種情況下,你應該使用一個實際的數據庫。 – 2010-01-14 21:59:45

+0

儘可能擱置使用cPickle嗎? – linkmaster03 2010-01-14 22:17:05

+0

它確實使用cPickle(如果可用),您可以通過設置shelve.Pickler來覆蓋它。 – jspcal 2010-01-14 22:57:51

2

JSON和YAML工作得很好,也。

取決於「高效」的含義?文件的大小?需要時間?您需要編寫的代碼量是多少?

您有timeit模塊可用於確定哪些符合您的「高效」特定標準。

+0

執行速度。 – linkmaster03 2010-01-14 22:46:00

+0

@ linkmaster03:請用更多有用的事實來更新您的問題。隱藏關於答案評論的重要信息並不能幫助任何人理解你的問題。 – 2010-01-14 22:47:47