サイトアイコン 天文学者のpython・音楽・お料理レシピ

python入門講座 | ループ処理5(dictに対するループ)[第42回]

Ciao!みなさんこんにちは!このブログでは主に
(1)pythonデータ解析,
(2)DTM音楽作成,
(3)お料理,
(4)博士転職
の4つのトピックについて発信しています。

今回は「アラサーOLのためのpython入門講座」シリーズです!この講座では、プログラミング初心者アラサーOLのMi坊さんに、pythonを学習する上でのアドバイスを行います!「パソコンもプログラミングも初心者だけど、プログラミングができるようになりたい!」という方のためにstep-by-stepで解説していきます。

Pythonのプログラミングでは、for文を使ってdict型変数に対してループ処理を行う場面があります。Dict型変数に対してfor文を適用する方法はいくつかあります。場面に応じて使い分けることで、効率的なコードが書けます!実戦で頻出のテクニックなのでマスターしましょう!

この記事を読めば、pythonでlist型に対するループ処理書き方を知ることができます。ぜひ最後までお付き合いください!

Kaiko

この記事はこんな人におすすめ

  • 初心者だけどpythonを始めた!
  • pythonの基本的な使い方を知りたい!
  • 独学で学んだpythonの知識を整理したい!

Abstract | Dict型変数に対するループ

Pythonプログラミングでdict型変数に対してループ処理を行う場面は多々あります。Dict型変数に対してループをかける方法はいくつかあります。今回は

  1. for文の対象を変数自体にしてdict型変数のkeyをループ
  2. for文の対象を変数.keys()としてdict型変数のkeyをループ
  3. for文の対象を変数.values()としてdict型変数の値をループ
  4. for文の対象を変数.items()としてkeyと値の両方をループ

という4つの方法をご紹介します。for文の中の処理でkeyだけを参照する場合は方法1か2、値も参照したい場合は方法3か方法4などと、目的によって使い分けることで効率よくコーディングできます。やってみてください!



Background | ループ処理とfor文

ループ処理とは、同じ処理を一定回数繰り返すことです。Listなど配列タイプの変数のすべての要素や一部の要素に同じ処理を行いたいとき、一回一回の処理をいちいち書き下すことなく、いっぺんに処理することができます。ループ処理はPythonに限らずプログラミングで不可欠な処理です。

Pythonではfor文やwhile文を使ってループ処理を実装することができます。for文では予め繰り返し処理を行う回数が決まっています。一方、while文では繰り返しの範囲が決まっておらず、ある条件を満たしたら処理を終える、逆に言うと条件を満たすまでは延々と処理が繰り返されます。

今回はfor文をdict型変数に適用するテクニックをご紹介します!for文については以下の過去記事もありますので、参考にご覧ください。

  1. for文の基礎: python入門講座 | ループ処理1(for文の基本的な使い方)
  2. for文の実戦的な使い方: python入門講座 | ループ処理2(for文とrange()で実戦的なループ処理)[第39回]
  3. for文の中断: python入門講座 | ループ処理3(breakまたはcontinueでループを中断)
  4. list型に対するループ: python入門講座 | ループ処理4(listに対するループ)

また、dict型変数にfor文を適用する方法は以下の記事でも発展編として取り扱いました。こちらも御覧ください!



Method | Dict型変数に対してループする方法

for文を使ってdist型変数についてループする方法を解説します。実際に手を動かしながら学んでいきましょう!Jupyter Notebookを立ち上げてコーディングしながら読み進めてください。練習問題の後にコーディング例も掲載しますので、やってみてどうしてもわからなければそれを見て進めてください。



準備 | python notebookの新規作成

まずはpython notebookを用意しましょう。いつものpython_practiceのディレクトリに「practice_for_dict」という名前のpython notebookを作成してください。ターミナルを立ち上げて~/python_practiceに移動、jupyter notebookを起動し、ブラウザから新規→Python3でpython notebookを開いて、ファイル→リネームでファイル名を決定します。
もしやり方がわからなければ、過去記事「python入門講座|pythonを使ってみよう2(Jupyter Notebookを使う方法)」で詳しく解説しているので、これを見ながらやってみてください。

python notebookを起動したら、適宜Markdownセルに説明書きを加えながら下記の説明に沿ってコードを書いて実行していきましょう。Markdownセルやコードセルなどの用語やこれらの使い方についても、過去記事「python入門講座|pythonを使ってみよう2(Jupyter Notebookを使う方法)」を参照してください。練習問題の後にpython notebookの例を掲載します。もし書き方がわからなければそちらを見てください。



例の準備 | dict型変数の定義

例を扱うため、まずはdict型変数を定義しておきましょう。以下を実行してください。

# define a dict variable
capital_cities = {'Japan': 'Tokyo', 'France': 'Paris', 'Germany': 'Berlin', 'Spain': 'Madrid', 'Italia': 'Roma'}

# print the variable
print(capital_cities)

実行結果は以下です。国名がkey、首都の名前が値のdict型変数が作成されます。

{'Japan': 'Tokyo', 'France': 'Paris', 'Germany': 'Berlin', 'Spain': 'Madrid', 'Italia': 'Roma'}



方法1: 変数自体を対象にdict型のkeyをループ

変数自体をforの対象にすると、dict型のkeyに対してループがかかります。変数のkeyをひとつずつ取り出すことができるので、値も簡単に取り出せます。最も実践的な方法です。以下の例を実行してみましょう。

#  loop for dict
for t in capital_cities:
    # t is a key of capital_cities
    print(t, ':', capital_cities[t])

この例では、for文の対象を変数capital_cities自体にすることで、仮変数tに変数capital_citiesのkeyが一つ一つ格納されていきます。「capital_cities[t]」で値も呼び出すことができます。

実行結果は以下です。

Japan : Tokyo
France : Paris
Germany : Berlin
Spain : Madrid
Italia : Roma



方法2: keysメソッドを対象にdict型のkeyをループ

Dict型変数にkeysメソッドを適用し、それをfor文の対象にすることができます。このようにしてもdict型のkeyに対してループがかかります。結果は方法1と全く同じです。Keysメソッドの詳細は過去記事「python入門講座 | dict型の使い方6(keyと要素の一覧取得方法)」をご参照ください。

以下の例を実行してみましょう。

#  loop for keys()
for t in capital_cities.keys():
    # t is a key of capital_cities
    print(t, ':', capital_cities[t])

この例では、for文の対象をkeysメソッドすなわち「capital_cities.keys()」とすることで、仮変数tに変数capital_citiesのkeyが一つ一つ格納されていきます。実行結果は方法1と全く同じになります。



方法3: valuesメソッドを対象にdict型の値をループ

Dict型変数にvaluesメソッドを適用し、それをfor文の対象にすることができます。するとdict型の値に対してループがかかります。keyが取り出せませんが、値だけを取り出せれば良いときには便利です。以下の例を実行してみましょう。

#  loop for values()
for t in capital_cities.values():
    # t is a value of capital_cities
    print(t)

この例では、for文の対象をvaluesメソッドすなわち「capital_cities.values()」とすることで、仮変数tに変数capital_citiesの値が一つ一つ格納されていきます。実行結果は以下です。

Tokyo
Paris
Berlin
Madrid
Roma



方法4: itemsメソッドを対象にdict型のkeyと値をループ

Dict型変数にitemメソッドを適用し、それをfor文の対象にすることができます。するとdict型のkeyと値のペアに対してループがかかります。keyと値のペアはtupleとして取り出され、0番目がkey, 1番目が値となります。以下の例を実行してみましょう。

#  loop for dict_items
for t in capital_cities.items():
    # t is a tuple of (key, value) in capital_cities
    print(t)
    print('   type:', type(t))
    print('   key:', t[0])
    print('   value:', t[1])

この例では、for文の対象をitemsメソッドすなわち「capital_cities.items()」とすることで、仮変数tに変数capital_citiesのkeyと値のペアが一つ一つ格納されていきます。仮変数tはtuple型になります。「t[0]」にkey、「t[1]」に値が入ります。実行結果は以下です。

('Japan', 'Tokyo')
   type: <class 'tuple'>
   key: Japan
   value: Tokyo
('France', 'Paris')
   type: <class 'tuple'>
   key: France
   value: Paris
('Germany', 'Berlin')
   type: <class 'tuple'>
   key: Germany
   value: Berlin
('Spain', 'Madrid')
   type: <class 'tuple'>
   key: Spain
   value: Madrid
('Italia', 'Roma')
   type: <class 'tuple'>
   key: Italia
   value: Roma



Result | 練習問題

練習問題をやってみましょう。以下の処理を行うコードを書いてみましょう。

  1. dict型変数prefectural_capitalsを以下のkeyと値で作成し、print文で出力してください。
    • key1: Hokkaido, 値1: Sapporo
    • key2: Kanagawa, 値2: Yokohama
    • key3: Okinawa, 値3: Naha
  2. for文を使って変数prefectural_capitalsのkeyを一つずつ出力してください。
    ただし、変数自体をfor文の対象にしてください。
  3. for文を使って変数prefectural_capitalsのkeyを一つずつ出力してください。
    ただし、変数にkeysメソッドを適用した結果をfor文の対象にしてください。
  4. for文を使って変数prefectural_capitalsの値を一つずつ出力してください。
    ただし、変数にvaluesメソッドを適用した結果をfor文の対象にしてください。
  5. for文を使って変数prefectural_capitalsのkeyと値をセットで一つずつ出力してください。
    ただし、変数にitemsメソッドを適用した結果をfor文の対象にしてください。



練習問題の回答例

練習問題の回答が完成したら回答例を確認しましょう!下の画面をスクロールすると回答例が見られます!参考にしてみてください。また、今回の記事で出てきた他のコードも載っているので参考にしてください!

練習問題おつかれさまでした!
今日はここまでです。Python Notebookを終了しておきましょう。もしPython Notebookを終了方法がわからなければ過去記事「python入門講座|pythonを使ってみよう2(Jupyter Notebookを使う方法)」の「Python Notebookの起動・終了方法」の章を参照してください!



Conclusion | まとめ

最後までご覧いただきありがとうございます!
Dist型変数にfor文を適用してkeyや値を参照する方法を解説しました。実戦でもよく使うテクニックです。今回紹介した4つの方法をぜひ覚えてマスターしましょう!

以上「python入門講座 | ループ処理5(dictに対するループ)」でした!
またお会いしましょう!Ciao!



References | 参考

以下の教科書を参考にして進めています!より詳しく学びたい方は購入して読んでみてください!

Pythonの参考教科書

モバイルバージョンを終了