2017-06-26 7 views
1

私はプログラミングに慣れていませんし、現在はPythonを学んでいます。私はPythonで辞書を試しているときに立ち往生しています。 私は空の文字列としてキーと値を持つ通常の辞書があります。私はこのようなキーの値を更新していますPythonの入れ子にされたdictの値を更新するには?

dict = {'Project_path':''}, 
     'Target_files':'', 
     'default_ws':''} 

を:

dict['project_path'] = 'Pass' 

をしかし、私は辞書を作成したいです長いキーを使う必要はありません。私は辞書を更新したい場合、私はこのようにそれを行うことができるように代わり、私は数字にこれらのキーをマップすることができます。

dict = {1:{'Project_path':''}, 
     2:{'Target_files':''}, 
     3:{'default_ws':''}} 
dict['1'] = 'pass' 

それは

'pass'ようと値を更新した後 'project_path'の値を更新する必要があり、私はこれをファイルに書く必要があります

これを行う方法はありますか?

答えて

0

Pythonでのプログラミングへようこそ!ここではいくつか:最初に、dictを変数名として使用することは、辞書オブジェクトのクラス全体のキーワードであるため、良い考えではありません。 my_dictなどを使用できます。

第2に、キー番号を作成してdict['1'] = 'pass'を呼び出すと、整数1をキーとして宣言したときに、キーで文字列 '1'が検索されます。私に説明させてください:

'1'は文字列です

1は整数です。

これらは2つの非常に異なるものであり、混在することはできません。だからこそ値は更新されません。もしあなたがdict[1] = 'pass'と言うなら、それはあなたのために働くはずで、値を更新するはずです。ただし、現在の値である辞書全体を上書きして 'pass'に置き換えます。代わりに、辞書キーを変更するだけの場合は、

dict[1]['Project_path'] = 'pass'を使用してください。

これは私には重複しているようです。なぜ整数をマッピングしたいのかはっきりしていませんが(ループして値を変更するなど)、整数が必要な場合は、次のような辞書を作成して配列できます。

my_array = [{"Project_path": ''}, {"Target_files":''}, {default_ws":''}] 

その後、0から始まるインデックスでアクセスできます。my_array[0]{"Project_path":''}です。繰り返しますが、整数をこれらのディクテーションにマップする理由は不明です。少し冗長であるため、実際には意味がありません。

最後に、ファイルに書き込みます。そこにはたくさんのオプションがあるので、多くのWebページがあります(this oneのような)が、ここでは短いバージョンです。

with open('your_filepath.txt', 'w') as file: #note this will overwrite the current file, see the page I linked. 
    file.write(my_array[0]) #or whatever you want to write to it. 

それは私が言ったように、単純な、しかし、すべてのオプションが何であるかを見て、あなたのための最良のものを選択するために、そのページを見てみることです。うまくいけばそれは役に立ち、あなたを始めることができます。

+0

ありがとうSH7890これは多くの助けになり、マッピングの整数に関しては、私は他のクラスのdictを再利用し、ループを使ってキーの値を更新したいと思っています。長いキーは、数値を持っているので、値を簡単に更新できるようになりました。そして、dictの配列の後に、今すぐproject_path = 'Pass'の値を更新したい場合は、インデックスを作成することができます。 – PythonFreek

+0

'my_array [0] [" Project_path "] ="パス "'は値を変更します。 – SH7890

+0

私はあなたが初心者であることを知っています。正しい方向に向かっていますが、Pythonには辞書をループするためのいくつかの高度な機能があります。ループやデータ構造に慣れると、それらをチェックする必要があります。あなたの努力は幸運です! – SH7890

関連する問題