2013-05-15 43 views
0

我正在尋找一種在python中使用常用或集中字典的方法。我有幾個工作在相同數據集上的腳本,但做了不同的事情。我在這些腳本中使用了dictionarys(例如,工具名稱),這些腳本用於多個腳本中。如果我做出改變或增加價值,我必須讓所有腳本都這樣做,這當然是痛苦的,並且容易出錯。python中的常見或集中字典

有沒有可能,我有一本字典,並在所有不同的腳本中使用它?

任何幫助表示讚賞 - 謝謝。

+3

將字典寫在它自己的文件中並導入它? –

+0

不同的腳本=不同的過程。 他們會共享內存嗎?如果僅讀取數據,那麼它將工作,但如果您修改一個腳本中的數據? 我認爲@pcalcao是正確的 –

+0

Jochens的建議是我現在正在做的。 FallenAngle的一個非常好的例子 - 感謝所有的答案。 –

回答

1

對於這種情況,我在我的項目根目錄中有一個general_values.py文件。

由於列表和dictionaries都使用參考存儲值,使用不同的腳本相同dictlist不會引起問題,因爲它們都將使用存儲在內存中的同一個數據。

Likwise:

main_values.py 

    my_dict = {1:1} 

some.py 

    import main_values 
    main_values.my_dict[2] = 2 

other.py 

    import main_values 
    print main_values.my_dict 

    >> {1:1, 2:2} 
+0

所有答案都有幫助。我期待着沿着這條路線發展,但只是想不出如何去做。 –

2

我,如果你談論的是在同一進程中運行需要共享同一數據多個腳本,或幾個過程並沒有完全明白:

幾個過程:

我想在幾個腳本(不同進程)之間共享數據的最簡單方法是使用簡單的文件數據庫。

SQLite3與Python捆綁在一起,所以這將是一個不錯的選擇。

單進程:

如果你只是想集中在同一時間(在同一進程中)運行的幾種方法訪問,那麼你可以聲明在一個腳本你的字典,並擁有所有的其他人訪問該位置,而不復制該結構。 您基本上在腳本中聲明瞭這個字典,並將其導入所有其他字體中。

1

一些選項:

  • 你可以使用一個共享的文件束之高閣。見http://docs.python.org/2/library/shelve.html
  • 你可以存儲配置信息的JSON/YAML或類似的文件
  • 這可能是矯枉過正的用例,但是像http://redis.io(或輕的密鑰存儲)數據庫將使您能夠使用dict樣接口在整個進程間持久化密鑰並可用於其他語言。