Address
304 North Cardinal St.
Dorchester Center, MA 02124
Work Hours
Monday to Friday: 7AM - 7PM
Weekend: 10AM - 5PM
Address
304 North Cardinal St.
Dorchester Center, MA 02124
Work Hours
Monday to Friday: 7AM - 7PM
Weekend: 10AM - 5PM
今回はPythonの辞書の中に、その要素として別の辞書を設定する方法について解説します。もちろん最も初歩的な辞書の作り方、その操作の仕方と同じです。
Contents
まずは新しい辞書を1つ作りましょう。次のコードを入力します。
#新しい辞書の作成
student_dict={
'id':'A0283456',
'name':'Tom',
}
student_dict
今回は生徒の情報を扱う辞書という感じにしました。生徒のID番号と名前が入力されています。
実行結果は、
{'id': 'A0283456', 'name': 'Tom'}
です。
「コロン(:)」の←側が「キー(Key)」で、→側が「値(Value)」です。
では、上記の辞書に、別の辞書を追加で挿入してみましょう。つまり、辞書の中に辞書が入っている、多重構造の辞書となります。
そのような入れ子(多重構造)の状態を「ネスト」と言います。今回は辞書がネストになっているので、ネストされた辞書という言い方になりますかね。
そのコードは次のようになります。
#新しい要素(キー:値)の追加
student_dict['scores'] = {
'Mathematics': 53,
'Engish': 78,
'Science': 36,
}
student_dict
scoresというキーに対して、数学の点数、英語の点数、理科の点数の3つを辞書にして設定しました。
実際にこれを実行すると、
{'id': 'A0283456',
'name': 'Tom',
'scores': {'Engish': 78, 'Mathematics': 53, 'Science': 36}}
このように表示されて、たしかにscoresの値として、辞書が埋め込まれていますね。このキーと値の対応関係を表にします。
キー | 値 |
---|---|
id | 文字列としてのA0283456 |
name | 文字列としてのTom |
scores | 辞書としての {‘Engish’: 78, ‘Mathematics’: 53, ‘Science’: 36}} |
では次に、上のように作った辞書student_dictのキーの値を全て取得してみましょう。辞書オブジェクトの組み込みメソッドのkeys()を使って次のようにします。
#キーのリスト
student_dict.keys()
「keys」と複数形にすることに注意してください。「s」を忘れるとエラーになります。
これを実行すると、
dict_keys(['id', 'name', 'scores'])
このようになります。
次に同様に値を全て取得してみましょう。今度はvalues()メソッドを使って次のようにします。
#値のリスト
student_dict.values()
実行結果は、
dict_values(['A0283456', 'Tom', {'Mathematics': 53, 'Engish': 78, 'Science': 36}])
きちんと、scoresというキーに対応する値として、辞書が表示されていますね。
最後に、辞書のキーと値をセットにしたタプルの一覧を取得してみましょう。そのためにはitems()メソッドを使います。これも複数形の「s」を忘れないようにしましょう。
student_dict.items()
実行結果は、
dict_items([('id', 'A0283456'), ('name', 'Tom'), ('scores', {'Mathematics': 53, 'Engish': 78, 'Science': 36})])
このようになります。それぞれのセットが、タプル形式、つまり(○, △)という形になっていますね。
以上のようにキー、値、そして(キー, 値)のタプルを取得できましたが、その結果をよく見ると、全て「dict_XXX」という見慣れない形式になっていますよね。
実はそれはPython上でも特別な、「辞書ビューオブジェクト」というオブジェクトになっています。
公式ドキュメントでは次のように説明されています。
Python公式ドキュメント「辞書ビューオブジェクト¶」
dict.keys()
,dict.values()
,dict.items()
によって返されるオブジェクトは、 ビューオブジェクト です。これらは、辞書の項目の動的なビューを提供し、辞書が変更された時、ビューはその変更を反映します。
詳しいことの説明は省きますが、上述のように単純なタプルオブジェクトやリストオブジェクトではなく、特別なオブジェクトなのでそのままでは「使いにくい」状態です。
実際に試しに、items()メソッドを使った結果の型を調べてみましょう。
type(student_dict.items())
こうすると実行結果は、
dict_items
となり、tuppleやlistとは表示されません。
そこでこの使いにくいを試しにリストにしてみましょう。list()を使います。
list(student_dict.items())
こうすると、
[('id', 'A0283456'),
('name', 'Tom'),
('scores', {'Engish': 78, 'Mathematics': 53, 'Science': 36})]
と、ちゃんとリストになって出力されました。これで通常のリストを扱うように、処理をすることができますね。
なお関数のネストについては以下の過去記事を読んで見てください。