python入門講座 | dict型の使い方6(keyと要素の一覧取得方法)[第34回]

アラサーOLのためのpython入門講座
dict型ではkeyと値の対応関係が重要です。それぞれの一覧を取得することができます。

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

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

今日はdict型(=辞書型)変数のkeyの一覧や要素の一覧を取得する方法を解説します。dict型変数のkey一覧は「変数.keys()」、値の一覧は「変数.values()」、keyと値の組み合わせ一覧は「変数.items()」で取得できます。実際のプログラミングの場面でも必要なテクニックです。

この記事を読めば、dist型変数のkeyの一覧方法を知り、pythonプログラミングの知識を深めることができます。ぜひ最後までお付き合いください!

Kaiko
Kaiko

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

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

Abstract | dict型ではkeyと値の対応関係が重要

dict型の変数を使うときにはkeyと値の対応関係を把握しておくことが重要です。そのため、実際のプログラミングの場面でdict型のkeyや値の一覧を確認する作業が必要になることがあります。pythonでは定義されたdict型変数のkeyの一覧や値の一覧を取得することができます。keyと値の対応関係の確認以外に、keyの一覧や値の一覧をlist型に変換して利用することもできます。keyや値の一覧の取得方法は知っておくと便利なので、ぜひ今回でマスターしましょう!



Background | dict型(辞書型)の概要

dict型はlist型と同様、一つの変数に複数の値を格納することができる変数の型です。日本語では「辞書型」と呼ばれますが、本稿ではdict型と呼びます。dict型は、複数の値を格納することができる配列タイプの変数の中では、格納できる値の数やtypeが自由に設定できる柔軟な変数です。
配列タイプの変数の種類と特徴についてはこちらの記事を参照ください→「python入門講座 | 配列タイプ変数の種類と特徴(リスト, NumPy配列, DataFrameなど)」。

dict型の主な特長は

  1. keyを使って値を格納、参照できる (list型と異なる)
  2. どんな型の値や変数でも格納できる (list型と同じ)

の2つです。list型と異なり、格納された値の順番に意味はないため、どの位置にどの値が入っているかを覚えておく必要がありません。わかりやすいkeyで値を格納しておけば、後でスムーズに参照することができます。dict型変数の特徴について、詳しくはこちらの記事をご参照ください→「python入門講座 | dict型の使い方1(辞書型の特長とlist型との違い)」。

今回はdict型変数の要素(格納された値)を削除する方法を解説します。dict型変数についての以下の過去記事もご覧ください!

  1. dict型変数の特長: python入門講座 | dict型の使い方1(辞書型の特長とlist型との違い)
  2. dict型変数の作成: python入門講座 | dict型の使い方2(変数を作成する方法)
  3. dict型変数の参照: python入門講座 | dict型の使い方3(要素を取り出す方法)
  4. dict型変数の更新: python入門講座 | dict型の使い方4(要素を追加・更新する方法)
  5. dict型変数の削除: python入門講座 | dict型の使い方5(要素を削除する方法)
  6. dict型変数の結合: python入門講座 | dict型の使い方6(辞書の結合)



Method | dict型変数のkeyと値の一覧方法

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

準備 | python notebookの新規作成

まずはpython notebookを用意しましょう。いつものpython_practiceのディレクトリに「practice_dict_keys」という名前の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型変数のkey一覧を取得する方法 | keysメソッド

dict型変数のkeyを取得するにはkeysメソッドを使います。dict型変数のkeyの一覧は

変数.keys()

で取得できます。

dict型変数のkey一覧を取得する例

dict型変数のkey一覧を取得してみましょう。まずは以下のように、国名をkey、首都名を値とした変数を定義してください。

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

# print the variable
print(capital_cities)

変数が定義できたので、この変数のkeyの一覧を取得してみましょう。以下を実行してください。

# get keys
keys_capital_cities = capital_cities.keys()

# print the keys
print(keys_capital_cities)

# print the type of the keys
print(type(keys_capital_cities))

上の例では、まずkeysメソッドで変数capitals_citiesからkey一覧を取得し、変数keys_capical_citiesに格納しています。次に、print文で変数keys_capical_citiesに格納されたkey一覧を出力しています。最後に変数keys_capical_citiesの型を出力しています。

上の例を実行すると、以下のようにkey一覧とその型(type)が表示されます。

dict_keys(['Japan', 'France', 'Germany', 'Spain', 'Italia'])
<class 'dict_keys'>

keysメソッドで得られるkey一覧は「dict_keys」という型であることがわかります。



一覧のkeyをリストに変換する例

keysメソッドで取得されたkey一覧はdict_keysというマイナーな型なので、list型に変換したほうが便利な場合があります。list型への変換をやってみましょう。list型への変換はlist()を使います。以下を実行してください。

# get keys as list
keys_capital_cities = list(capital_cities.keys())

# print the keys
print(keys_capital_cities)

# print the type of the keys
print(type(keys_capital_cities))

この例では、最初のkeysメソッドで得られるkey一覧を、list()を使ってlist型に変換しています。変数keys_capital_citiesはlist型となります。

上の例を実行すると、key一覧がlist型として表示されます。変数の型もlistとなります。出力は以下のようになります。

['Japan', 'France', 'Germany', 'Spain', 'Italia']
<class 'list'>



dict型変数の値の一覧を取得する方法 | valuesメソッド

dict型変数の値を取得するにはvaluesメソッドを使います。dict型変数の値の一覧は

変数.values()

で取得できます。

dict型変数の値の一覧を取得する例

dict型変数の値の一覧を取得してみましょう。前述のkey一覧取得の例で定義した、国名をkey、首都名を値とした例を使います。先に前述の例をやっておいてください。

以下の例を実行して、dict型変数の値の一覧を取得しましょう。

# get values
vals_capital_cities = capital_cities.values()

# print the values
print(vals_capital_cities)

# print the type of the values
print(type(vals_capital_cities))

最初にvaluesメソッドで値の一覧を取得し、変数vals_capital_citiesに格納します。それをprint文で出力し、最後に変数vals_capital_citiesの型を表示します。

上の例を実行すると、以下のように値の一覧とその型が表示されます。

dict_values(['Tokyo', 'Paris', 'Berlin', 'Madrid', 'Roma'])
<class 'dict_values'>

valuesメソッドで得られる値の一覧は「dict_values」という型であることがわかります。



一覧の値をリストに変換する例

valuesメソッドで取得された値の一覧はdict_valuesというマイナーな型なので、list型に変換したほうが便利な場合があります。list型への変換をやってみましょう。以下を実行してください。

# get values
vals_capital_cities = list(capital_cities.values())

# print the values
print(vals_capital_cities)

# print the type of the values
print(type(vals_capital_cities))

この例では、最初のvaluesメソッドで得られる値の一覧を、list()を使ってlist型に変換しています。変数vals_capital_citiesはlist型となります。

上の例を実行すると、値の一覧がlist型として表示されます。変数の型もlistとなります。出力は以下のようになります。

['Tokyo', 'Paris', 'Berlin', 'Madrid', 'Roma']
<class 'list'>



dict型変数のkeyと値のペア一覧を取得する方法 | itemsメソッド

dict型変数のkeyと値のペアを取得するにはitemsメソッドを使います。dict型変数のkeyと値の一覧は

変数.items()

で取得できます。

dict型変数のkeyと値のペア一覧を取得する例

dict型変数のkeyと値のペア一覧を取得してみましょう。前述のkey一覧取得の例で定義した、国名をkey、首都名を値とした例を使います。先に前述の例をやっておいてください。

以下の例を実行して、dict型変数のkeyと値のペア一覧を取得しましょう。

# get items
items_capital_cities = capital_cities.items()

# print the items
print(items_capital_cities)

# print the type of the items
print(type(items_capital_cities))

最初にitemsメソッドでkeyと値のペアの一覧を取得し、変数items_capital_citiesに格納します。それをprint文で出力し、最後に変数items_capital_citiesの型を表示します。

上の例を実行すると、以下のように値の一覧とその型が表示されます。

dict_items([('Japan', 'Tokyo'), ('France', 'Paris'), ('Germany', 'Berlin'), ('Spain', 'Madrid'), ('Italia', 'Roma')])
<class 'dict_items'>

valuesメソッドで得られるkeyと値のペアの一覧は「dict_items」という型であることがわかります。



一覧のkeyと値のペアをリストに変換する例

itemsメソッドで取得された値の一覧はdict_itemsというあまり使われない型なので、list型に変換したほうが便利な場合があります。list型への変換をやってみましょう。以下を実行してください。

# get items
items_capital_cities = list(capital_cities.items())

# print the items
print(items_capital_cities)

# print the type of the items
print(type(items_capital_cities))

この例では、最初のitemsメソッドで得られる値の一覧を、list()を使ってlist型に変換しています。変数items_capital_citiesはlist型となります。

上の例を実行すると、値の一覧がlist型として表示されます。変数の型もlistとなります。出力は以下のようになります。

[('Japan', 'Tokyo'), ('France', 'Paris'), ('Germany', 'Berlin'), ('Spain', 'Madrid'), ('Italia', 'Roma')]
<class 'list'>

listの各要素はtuple(タプル)型となります。tupleがlistに入っているので言うなればtuple in listですが、参照する際はlist in listと同じよに扱うことができます。list in listについてはこちらの過去記事「python入門講座 | List型の使い方2(リストから値を取り出すインデックスとスライスの方法)」をご覧ください。



発展編 1: keyと値のペアをNumPy配列に変換する方法

itemsメソッドで得られるkeyと値のペア一覧をNumPy配列に変換する方法を扱います。NumPy配列について本講座ではまだ扱っていませんが、ここでは発展編として扱います。興味がある方は御覧ください!

keyと値をペアとして取得する場合、list型(tuple in list)よりもNumPy配列(2次元配列)とした方が勝手が良いです。スライスを行うことで、keyだけあるいは値だけ参照できるためです。dict_items型から直接NumPy配列にはできないので、一度list型を経由するのがポイントです。以下を実行してみましょう。

# import numpy
import numpy as np

# get items as 2d array
items_capital_cities = np.array(list(capital_cities.items()))

# print the items
print(items_capital_cities)

# print the type of the items
print(type(items_capital_cities))

この例では、最初のitemsメソッドで得られる値の一覧を、list()を使ってlist型に変換した上で、np.array()でNumPy配列に変換しています。変数items_capital_citiesはnumpy.ndarray型となります。

上の例を実行すると、値の一覧が2次元配列として表示されます。変数の型もnumpy.ndarray(NumPy配列)となります。出力は以下のようになります。

[['Japan' 'Tokyo']
 ['France' 'Paris']
 ['Germany' 'Berlin']
 ['Spain' 'Madrid']
 ['Italia' 'Roma']]
<class 'numpy.ndarray'>

NumPy配列化したkeyと値のペアからkeyだけ取得する方法

NumPy配列のスライスを使って、NumPy配列化したkeyと値のペアからkeyだけ取得することができます。前述のkeyと値のペアのNumPy2次元配列の1次元目(axis == 1)の0番目の要素、すなわち1列目がkeyです。これを取り出すには「変数[:, 0]」とします。以下の例をやってみましょう。

# get keys from NumPy-ized items
print(items_capital_cities[:, 0])

これを実行すると以下のように出力されます。

['Japan' 'France' 'Germany' 'Spain' 'Italia']

NumPy配列化したkeyと値のペアから値だけ取得する方法

NumPy配列のスライスを使って、NumPy配列化したkeyと値のペアから値だけ取得することができます。前述のkeyと値のペアのNumPy2次元配列の1次元目(axis == 1)の1番目の要素、すなわち2列目が値です。これを取り出すには「変数[:, 1]」とします。以下の例をやってみましょう。

# get values from NumPy-ized items
print(items_capital_cities[:, 1])

これを実行すると以下のように出力されます。

['Tokyo' 'Paris' 'Berlin' 'Madrid' 'Roma']



発展編 2: dict型に対するループ

dict型の要素についてforループを回す方法を紹介します。本講座ではまだforループを扱っていませんので発展的な内容です。興味がある方は御覧ください!

keyについてループする方法 1: dict型変数に対してループする

for文の参照先にdict型の変数そのものを指定すると、その変数のkeyについてループが走ります。dict型についてループを回すなら、この方法が一番シンプルです。以下の例をやってみましょう。

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

このfor文では、変数tに変数capital_citiesのkeyが順番に代入されていきます。keyを参照する場合は変数tを参照すればよく、値を参照する場合はtをkeyとして用いればよいです。この例では「capital_cities[t]」で値を参照できます。実行すると以下が出力されます。

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

keyについてループする方法 2: keysメソッドに対してループする

keysメソッドで取得したdict_keysに対してループをかけることもできます。結果は上記の方法1と全く同じです。以下を実行してみましょう。

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

この例では、変数capital_citiesにkeysメソッドを適用した結果、すなわちcapital_citiesのkeyが変数tに順番に代入されていきます。実行結果は以下のように方法1と同じになります。

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



値についてループする方法: valuesメソッドに対してループする

valuesメソッドで取得したdict_valuesに対してループをかけることも可能です。この場合、値だけを抽出することができます。以下を実行してみましょう。

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

この例では、変数capital_citiesに格納されている値は変数tに順番に代入されていきます。keyを参照することができないデメリットがありますが、値の参照は簡単というメリットがあります。

Tokyo
Paris
Berlin
Madrid
Roma



keyと値のペアについてループする方法: itemsメソッドに対してループする

itemsメソッドで取得したdict_itemsに対してループをかけることもできます。この場合、keyと値のペアはtupleとして取り出されます。tuple型の変数に格納された値はlist型のそれと同様に参照することができます。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])

この例では変数tにkeyと値のペアが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. 変数prefectural_capitalsから、keysメソッドを使ってkeyの一覧を取得し、print文で出力してください。
    さらにkeyの一覧をlist型に変換し、変換後の型と変数の中身をprint文で出力してください。
  3. 変数prefectural_capitalsから、valuesメソッドを使って値の一覧を取得し、print文で出力してください。
    さらに値の一覧をlist型に変換し、変換後の型と変数の中身をprint文で出力してください。
  4. 変数prefectural_capitalsから、itemsメソッドを使ってkeyと値のペアの一覧を取得し、print文で出力してください。
    さらにkeyと値のペアの一覧をlist型に変換し、変換後の型と変数の中身をprint文で出力してください。



練習問題の回答例

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

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



Conclusion | まとめ

最後までご覧いただきありがとうございます!
今回はdict型変数のkeyや値の一覧を取得する方法を解説しました。dict型はkeyと値の対応関係が重要です。これらの一覧を取得したいという機会は実際のプログラミングの場面でも頻繁に訪れるので実戦的なテクニックです!

以上「python入門講座 | dict型の使い方6(keyと要素の一覧取得方法)」でした!
またお会いしましょう!Ciao!



References | 参考

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

Pythonの参考教科書

参考外部サイト

今回は以下の外部webサイトも参考にしました。

コメント

タイトルとURLをコピーしました