Pythonには「辞書」と言う機能があります。
国語辞典から辞書を引いて日本語の文字を確認したりするように、Pythonでは任意の値をキーとして、対応する値を取り出す「辞書」を作る機能となります。
以下ではPythonの辞書機能の基本的な動作と書き方についてまとめました。
【Python】辞書の動作と使い方
Pythonの機能である「辞書」とは、「キー」と「データ」を紐づけるためのデータ型「辞書型(dict型)」です。
また、元となる文字列や値を「キー」、紐づく値を「バリュー」と言います。
国語辞典で言うと、「キー」は検索する単語であり、「バリュー」検索された単語となります。
キーとバリューの配置は以下となります。
{ key : value }
「辞書」の書き方
辞書の書き方は、「リスト」や「タプル」のように、データ群をカッコで囲みますが、辞書では{}カッコを使用します。
辞書の書き方は少し変わっており、キーとバリューを「:(コロン)」の両側におきます。
test_dict = { '001' : 'dictionary1', '002' : 'dictionary2', '003' : 'dictionary3', }
辞書からデータを取得する方法
辞書からデータを取得する際は、辞書が入った変数の後ろに[]カッコで囲んだキーを入れることで取得できます。
リストやタプルでデータを取得する場合と同じ方法となります。
辞書からデータを取得するプログラム
test_dict = { '001' : 'dictionary1', '002' : 'dictionary2', '003' : 'dictionary3', } id = test_dict['001'] print('辞書番号は{}です。'.format(id))
実行結果
$ python3 test_dict00.py 辞書番号はdictionary1です。
辞書にデータの「追加」、「上書き」をする
辞書ではすでに作成されたデータを追加したり、上書きをしたりすることができます。
書き方は変数の後ろの[]角カッコで、キーを定義し、それにバリューを代入すると言う形でできます。
注意点としては同じキーに対して別のバリューを追加した時は、バリューが「上書き」されます。
以下のそれぞれの例を参考にしてください。
データの追加
test_dict = { '001' : 'dictionary1', '002' : 'dictionary2', '003' : 'dictionary3', } test_dict['004'] = 'dictionary4' new_id = test_dict['004'] print('新しく追加された辞書番号は{}です。'.format(new_id))
実行結果
$ python3 test_dict00.py 新しく追加された辞書番号はdictionary4です。
データの上書き
test_dict = { '001' : 'dictionary1', '002' : 'dictionary2', '003' : 'dictionary3', } test_dict['001'] = 'dictionary5' new_id = test_dict['001'] print('上書きされた後の辞書番号は{}です。'.format(new_id))
実行結果
$ python3 test_dict00.py 上書きされた後の辞書番号はdictionary5です。
試験受講者の点数と評価を表示するプログラム
以下では、Pythonの「辞書」を応用したプログラムを作成します。
まずは、ファイルを作成し、試験の受験番号と、点数群を辞書に登録します。
test_dict = { '001': (90, 98, 88), '002': (80, 100, 70), '003': (30, 58, 89), }
次に以下のように辞書の中身を繰り返し処理をかけます。
for student_id in test_dict: ① points = test_dict[student_id] ② subject_number = len(points) ③ japanese, science, mathmatics = points ④ total = japanese + science + mathmatics ⑤
- 辞書の変数をfor文で繰り返し処理にかける
- 「キー」を指定し、「バリュー」を取得
- 教科数を取得
- タプルに入った点数群を多重代入
- 合計
最後に条件分岐で点数を評価していきます。
good = subject_number * 100 * 0.9 ------② success = subject_number * 100 * 0.7 if total >= good: ------① evaluation = 'good' elif total >= success: evaluation = 'success' else: evaluation = 'fail' print('試験番号{}: 合計点は{}点、評価は{}です。'.format(student_id, total, evaluation))
- 条件分岐を繰り返し処理
- 評価基準を変数に代入
「test_dict01.py」のプログラム
以下では、このプログラム全体の設定となります。
test_dict = { '001': (90, 98, 88), '002': (80, 100, 70), '003': (30, 58, 89), } for student_id in test_dict: points = test_dict[student_id] subject_number = len(points) japanese, science, mathmatics = points total = japanese + science + mathmatics good = subject_number * 100 * 0.9 success = subject_number * 100 * 0.7 if total >= good: evaluation = 'good' elif total >= success: evaluation = 'success' else: evaluation = 'fail' print('試験番号{}: 合計点は{}点、評価は{}です。'.format(student_id, total, evaluation))
実行結果
$ python3 test_dict01.py 試験番号001: 合計点は276点、評価はgoodです。 試験番号002: 合計点は250点、評価はsuccessです。 試験番号003: 合計点は177点、評価はfailです。
辞書も、Pythonでは多く利用することがあるため、必ず覚えておくべき機能です。
使用するところは多いので頭に入れておきましょう。
エンジニアのオンライン学習
エンジニアにおすすめのオンライン教材比較 | |
ITエンジニアが自宅で学習ができるオンラインスクール比較 | |