複数のキーはありません。あなたの例では、あなたのキーはタプルです('Michael', 'Student', 'marks obtained')
(ちなみに、辞書の構文は間違っています:{('Michael', 'Student', 'marks obtained') : 40}
あなたが暗示していることに基づいている必要があります)。
2 人の生徒が同じ名前を持たないことが保証されている場合 (おそらく姓とミドルネームのイニシャルを含めることができます!)、その名前だけをキーとして使用できます。次に、値を tuple にすることは理にかなっています(matriculation, marks obtained)
。そのように: {"Michael" : ('Student', 40)}
.
これらの生徒を印刷したい場合print name, students[name][0], "no", students[name][1]
、students
はあなたの辞書でありname
、 は生徒の名前である文字列であると言うことができます'Michael'
。
ちなみに、入学のために他に何ができるかわかりません'Student'
。実際に他の値を持つことができない限り、それを含める必要はないように思えます。
ここでの良い比喩は'Michael'
、彼に関連付けられた何らかのデータ、つまり、彼の入学ステータスと取得したマークの数を持っていると考えることです。これらのことは他の人にも起こる可能性があるため、入学したという状態は'Michael'
(特に)それに関連付けられておらず、40点を取得したことにも(特に)関連付けられていません。'Michael'
したがって、適切なキーは生徒の名前です。キーは一意である必要があります。そうでない場合、2 つ以上のデータ (値) が同じもの (キー) に関連付けられる、衝突と呼ばれる問題が発生します。
大きな編集:
編集した投稿を見ると、同じことは決してないため、キーは実際には入学番号でなければならないようです。これで、辞書は になります{matriculation_no : (name, marks)}
。そして、印刷は今print students[matriculation_no][0], "Admission", matriculation_no, students[matriculation_no][1]
かそのようなものです。それは、文字列に必要かどうかによって異なり"Admission"
ます。
マイナーな編集:
ファイルに書き込みたい場合は、file.write()
代わりに使用してください。