【Python】辞書を利用した複数データの処理の動作と書き方


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   ⑤
  1. 辞書の変数をfor文で繰り返し処理にかける
  2. 「キー」を指定し、「バリュー」を取得
  3. 教科数を取得
  4. タプルに入った点数群を多重代入
  5. 合計

最後に条件分岐で点数を評価していきます。

    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))
  1. 条件分岐を繰り返し処理
  2. 評価基準を変数に代入

「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では多く利用することがあるため、必ず覚えておくべき機能です。
使用するところは多いので頭に入れておきましょう。


関連記事


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

ABOUTこの記事をかいた人

blank

インターネット関連のSEをやっています。 ネットワーク、サーバー、ストレージ、仮想基盤まで幅広く手を出しており、MVNOの構築経験もあります。 現在は、Pythonを使ったプログラミングの開発をしネットワークの自動化ツールを作成しています! Pythonの入門書も作成しているので、ぜひ参考にしてください!