2016-04-06 8 views
0

私は個々の情報のクエリを実行しながらマスター辞書を作成する作業をしています。Pythonで辞書を更新するには?

現在、私が持っている:私は繰り返し要求し、すべての個人を保存したい

{'user_input':[info]} 

dictionary = {} 
user_input =input('enter user id: ') 
D = query(user_input) 
dictionary[user_input] = D 

そして、私は辞書[USER_INPUT] = Dを印刷する場合、私はこのような何かを取得します情報を1つのマスター辞書に入れてテキストファイルに入れます。

私は印刷物を書式設定してテキストファイルに印刷しようとすると、それはすべて大きな辞書として書かれます。私が試した何

は:しようとしました何かの差分:

output_file = ('output.txt', 'w') 
print(dictionary, file = output_file) 
output_file.close() 

これはのみ} {

EDITを印刷するようです。 Dはすでに辞書を返し ので、私が試した:辞書右にDに格納された辞書を追加することになっている

dictionary.update(D) 

?しかし

、私は印刷辞書試してください:ファイルへの書き込みを

print(dictionary) 

#it returns: {} 

答えて

1

使用json.dumpを。次に、json.loadを使用して、そのデータを辞書オブジェクトに戻すことができます。

import json 

with open('dictionary.txt', 'w') as f: 
    json.dump(dictionary, f) 

https://docs.python.org/3/library/json.html

EDIT:あなたはjson多分あなたはちょうどこのような新しいラインでの質問と回答を分離することができますを使用することはできませんので、。問題と

with open('dictionary.txt', 'w') as f: 
    for k,v in dictionary.items(): 
     f.write('%s=%s\n' % (k, v,)) 
+0

これは実際私がよく知っている方法ですが、私は特にjsonを使用しないように言われました.... – johnson

+0

代わりの解決策で答えを更新しました。 – fips

0

完全に慣れていないので、私は、これはあなたが探しているものであるのかはわからない:それはまた後で解析しやすいときれいになります。しかし、値を取得するために割り当て自体を印刷する必要はありません。辞書の内容をそのまま辞書に追加してから、スクリプトの最後に辞書全体をファイルとして印刷すると、次のようになります:

dictionary = {} 
user_input =input('enter user id: ') 
D = query(user_input) 
dictionary[user_input] = D 

# do this more times.... 
# then eventually.... 

print(dictionary) 

# or output to a file from here, as described in the other answer 
+0

これは私がやったことであり、印刷(辞書)すると{} – johnson