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




エンジニアのオンライン学習

ITエンジニアにおすすめの教材、オンラインスクールです。
無料からエンジニアの学習ができる教材などまとめているので参考にしてください。

おすすめオンライン教材
自宅で学習ができるオンラインスクール

ITエンジニアの開発・検証・学習としてインターネット上で専用のサーバ(VPS)を利用しましょう!
実務経験はVPSで学べます。



コメントを残す

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

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

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