2017-10-02 4 views
0

大きなプロジェクトで使用するためにどこかに保存したいdictを返すPythonスクリプトがあります(スクリプトが遅くなりすぎて、辞書を必要とするたびにスクリプトをインポートしたくない)。ピクルに書き込むか、ファイルに書き込むかを指定しますか?

dictは小さいので、2つのオプションがあります。私がすることができます:ピクルスファイルへ

  1. 保存dictの
  2. はそうのような、新しいの.pyファイルへのリテラルとしてのdictを書く:

    my_dict = slow_func() 
    with open('stored_dict.py', 'w') as py_file: 
        file_contents = 'stored_dict = ' + str(my_dict) 
        py_file.write(my_dict) 
    

    その後、私は文字通りの辞書にアクセスすることができます使用するfrom stored_dict import stored_dict

これらのオプションのうち1つを選択する必要がありますか?

+0

dictと同じように見える 'JSON'ファイルにダンプすることができます。 – Vinny

+0

[Pythonでの単純なデータの格納]の可能な複製(https://stackoverflow.com/questions/875228/simple-data-storing-in-python) – moooeeeep

+1

[Python:pickle?]の可能な複製(https:// stackoverflow.com/questions/21752259/python-why-pickle) –

答えて

3

Python dictはjsonのように実装されています。あなたは、ファイルに辞書をダンプし、簡単に戻ってそれをロードするためにjsonモジュールを使用することができます。

私の個人的な経験で
d = {1: 'a', 2: 'b', 3: 'c'} 

import json 

json.dump(d, file(r'C:\temp.txt', 'w')) 

new_d = json.load(file(r'C:\temp.txt')) 
>>> new_d 
{u'1': u'a', u'3': u'c', u'2': u'b'} 
0

、私はJSONを使用することをお勧めしている場合:あなたは、人間が読み取り可能なファイルをしたい

  • 実装のオーバーヘッドはほとんどありませんが、複数のテクノロジで互換性のあるファイルタイプです。
  • 簡単に編集可能なファイルです(テキストファイルのように)。

場合、私はピクルスを使用することをお勧めします。プロジェクトの大半はPythonで書かれます

  • ディクショナリは非常に大きな/複雑になる可能性が高く、より大きなクラスになる可能性があります。
  • 人間が読み取ることのできないファイルが必要です。
  • 構成の事前知識がなくても編集が困難なファイル。

あなたの質問に触れる状況に基づいて、JSONがより有益な選択肢になります。

関連する問題