2017-08-19 42 views
0

既存のデータを上書きせずに、Pythonで辞書にデータを保存するにはどうすればよいですか?例えばデータを上書きせずに辞書に保存するにはどうすればよいですか?

output = {} 

name = raw_input("Enter name") 
age = input("Enter your age") 
course = raw_input("Enter course") 
school = raw_input("Enter school") 

output['name'] = name 
output['age'] = age 
output['course'] = course 
output['school'] = school 

出力は次あります。

{ 
    "name": "Student 1", 
    "age": 25, 
    "course": "BSCS", 
    "school": "School 1" 
} 

次に、別のフィールドを追加すると、既存のデータが上書きされます。私はちょうどこのようにそれを保存することができますどのように

{ 
    "students": [ 
     { 
      "name": "Student1", 
      "age": 25, 
      "course": "BSIT", 
      "school": "School 1" 
     }, 
     { 
      "name": "Student2", 
      "age": 26, 
      "course": "BSCS", 
      "school": "School 2" 
     }, 
     { 
      "name": "Student3", 
      "age": 27, 
      "course": "BSCE", 
      "school": "School 3" 
     } 
    ] 
} 
+0

おかげ@Matheus – Jayjay

答えて

0

キーは一意であるので、あなたは、1つのキーに複数の値を保存したい場合は、値をリストまたは別の辞書を作り、タプル、カスタムオブジェクト

my_dict = {} 
my_dict["students"] = [] 
my_dict["students"].append(new_dict) 
私はあなたがJSONフォーマットのように、あなたのような他の辞書を使用することができますしたい場合は、しかし、クラスを作ったり、リスト内の学生にデータを格納するためのタプルを使用して検討する

new_dict = {"name": "Max", "age":12} 
my_dict["students"].append(new_dict) 

だから今、あなたが何か行うことができ

class Student(object): 

    __init__(self, name, age): 
     self.name = name 
     self.age = age 

のオブジェクトの場合は、あなたのようなものを作りたいです
+0

変数 'new_dict'がルート辞書のリスト内の別の辞書です。 JSONでは '{" students ":{{" name ":" max "、" age ":12}}}のようになります。 – meow

+0

そして私は 'my_dict.append(new_dict)'にキーを追加するのを忘れていました。 'my_dict [" students "]。append(new_dict)' – meow

+0

生徒クラスのraw_inputをparamsとして使うことはできますか? – Jayjay

0

また、組み込みのcollectionsモジュールとその中にdefaultdictというクラスを使用して解決することもできます。

import collections as cl 
output = cl.defaultdict(list) 
for i in range(n): 
    name, age, course, school = map(str, raw_input().split()) 
    age, key, value = int(age), "student" + str(i + 1), dict() 
    value["name"], value["age"], value["course"], value["school"] = name, age, course, school 
    output[key] = value 

限りドキュメントとして

は、このモジュールはPythonの汎用組み込みのコンテナ、辞書、リスト、セット、およびタプルへの代替を提供する専門的なコンテナ・データ型を実装して言います。

Python Documentation

+1

ありがとう、@Mayank。私はこのコードスニペットを使用しました。しかし、コンパイル中にエラーが発生しました。 – Jayjay

+0

@Jayjay申し訳ありませんが、いくつかのタイプミスがありました。 –

関連する問題