Pythonにおける辞書型データのforループ処理について現役エンジニアが解説【初心者向け】
初心者向けにPythonにおける辞書型データのforループ処理について現役エンジニアが解説しています。辞書型データとはkeyとvalueのペアから構成される配列の一種です。for文とは繰り返し処理などを行う構文です。for文で辞書型データのkey要素やvalue要素を利用する方法を解説します。
テックアカデミーマガジンは受講者数No.1のプログラミングスクール「テックアカデミー」が運営。初心者向けにプロが解説した記事を公開中。現役エンジニアの方はこちらをご覧ください。 ※ アンケートモニター提供元:GMOリサーチ株式会社 調査期間:2021年8月12日~8月16日 調査対象:2020年8月以降にプログラミングスクールを受講した18~80歳の男女1,000名 調査手法:インターネット調査
Pythonにおける辞書型データのforループ処理について、TechAcademyのメンター(現役エンジニア)が実際のコードを使用して初心者向けに解説します。
そもそもPythonについてよく分からないという方は、Pythonとは何なのか解説した記事を読むとさらに理解が深まります。
なお本記事は、TechAcademyのオンラインブートキャンプPython講座の内容をもとに紹介しています。
今回は、Pythonに関する内容だね!
どういう内容でしょうか?
Pythonにおける辞書型データのforループ処理について詳しく説明していくね!
お願いします!
目次
dict型データとは
dict型データとは辞書はPythonのデータ構造の一つで、連想配列して記憶している人もいるかもしれません。辞書は、keyとvalueのペアコレクションから構成されます。それぞれのkeyとvalueのペアは、keyと関連する値をマッピングします。
カンマで区切られたkeyとvalueのペアのリストを中括弧 ( { } ) で囲むことで、辞書を定義することができます。コロン ( : ) は、各keyと関連するvalueを分離するために持ち入ります。
なお、辞書型のデータには順番がありません。(リストには順番があります。)変更することが可能です。また、インデックスを用いてデータを取り出すことも可能ですが、dict型のデータを更新するたびに順番が変わることに注意が必要です。
for文とは
for文とは、シーケンス (リスト、タプル、辞書、セット、文字列のいずれか) の反復処理に使用されます。
これは他のプログラミング言語のforのようなものではなく、他のオブジェクト指向プログラミング言語で見られるイテレータメソッド(ある集合体のオブジェクト群の中で集合体の要素1つ1つに順次アクセスすることを可能とするパターン)のように動作します。
for文を使用すると、リスト、タプル、セットなどの各項目について1回ずつ、一連のステートメントを実行することができます。
辞書型データにおけるforループ処理の使い方
辞書型でforループ処理をする方法は大きく分けて2通りあります。
1.keyの要素を利用する場合
key要素を利用する場合には2通りの書き方があります。
-
for key in dict.keys():
-
for key in dict:
どちらも同じ意味となりますが、.keys()を明示した方が、わかりやすいですので、上の書き方を使って書くことをお勧めします。また、keyを利用してvalueを取得することも容易にできます。
valueの要素を利用する場合
value要素を利用する場合には以下の書き方となります。
for value in dict.values():
ただ、valueを使ってkeyを取得する方法は少々手間がかかります。そのため、keyも使いたい場合には1の方法を利用することをお勧めします。
forループ処理を利用して辞書型データの各要素を取得してみよう
keyを使って要素を取得する場合
例1のソースコード
fruits_dict = {'apple': 1, 'orange': 2, 'banana': 3, 'peach': 4, 'lemon': 5, 'water melon': 6} for key in fruits_dict.keys(): value = fruits_dict[key] print("key: {}, value: {}".format(key, value))
結果
key: lemon, value: 5 key: apple, value: 1 key: peach, value: 4 key: water melon, value: 6 key: orange, value: 2 key: banana, value: 3
解説
こちらの方法を使うと容易にkeyとvalueを取得できます。
最終的にはシンプルな結果になっていると思います。また、dictは順番が維持されませんので、結果が1から出力されていないことにも気をつけてください。
例2のソースコード
fruits_dict = {'apple': 1, 'orange': 2, 'banana': 3, 'peach': 4, 'lemon': 5, 'water melon': 6} for key in fruits_dict: value = fruits_dict[key] print("key: {}, value: {}".format(key, value))
結果
key: lemon, value: 5 key: apple, value: 1 key: peach, value: 4 key: water melon, value: 6 key: orange, value: 2 key: banana, value: 3
解説
上の方法とほとんど変わりません。最終的に読み返した時に何を利用してforループをしているのかが、若干不明確です。他の人がコードを読んだ時にわかりやすいようにしてあげるのもプログラムを書く上で重要となります。
valueを使って要素を取得する場合
コード
fruits_dict = {'apple': 1, 'orange': 2, 'banana': 3, 'peach': 4, 'lemon': 5, 'water melon': 6} keys_list = list(fruits_dict.keys()) values_list = list(fruits_dict.values()) for value in fruits_dict.values(): key = keys_list[values_list.index(value)] print("key: {}, value: {}".format(key, value))
結果
key: lemon, value: 5 key: apple, value: 1 key: peach, value: 4 key: water melon, value: 6 key: orange, value: 2 key: banana, value: 3
解説
keyを取得する方法が非常に難しくなっています。これはdict型が順番を保持していないために起こることです。どちらも取得する場合にはkeyを使う方がいいでしょう。
どうしてもという時にだけ使用するか、関数を作ってしまうのも一つの方法です。
まとめ
dict型のデータをfor文を使って取得するのはいかがでしたでしょうか?Pythonのプログラムを書くと非常によく使う方法の一つかと思いますので、是非とも慣れていってください。
監修してくれたメンター
メンターkatoさん
学生時代に数値解析のためにプログラミングを始める。現在は企業にて専門職として働くかたわら、プログラムを書き業務効率化を図っている。 現在のメイン言語はPython, JavaScript。また、企業内の希望者にPythonのメンターとして基礎から教えている。テックアカデミーではJavaScriptを教える。 |
内容分かりやすくて良かったです!
ゆかりちゃんも分からないことがあったら質問してね!
分かりました。ありがとうございます!
TechAcademyでは、初心者でもPythonを使った人工知能(AI)や機械学習の基礎を習得できるオンラインブートキャンプPython講座を開催しています。
挫折しない学習方法を知れる説明動画や、現役エンジニアとのビデオ通話とチャットサポート、学習用カリキュラムを体験できる無料体験も実施しているので、ぜひ参加してみてください。