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

python入門講座 | dict型の使い方6(辞書の結合)[第33回]

dict型変数の結合を知っておくと、要素の追加や更新にも応用できます。

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

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

今日はdict型(=辞書型)変数同士を結合する方法を解説します。dict型変数は「{**変数1, **変数2}」という形で結合することができます。要素の更新や追加にも使える実践的なテクニックです。この記事を読めば、dist型変数の結合方法を知り、pythonプログラミングの知識を深めることができます。ぜひ最後までお付き合いください!

Kaiko

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

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

Abstract | 覚えておくと便利なdict型の結合

dict型変数同士は「{**変数1, **変数2}」という形で結合することができます。dict型変数の要素は格納された順番に関係なくkeyで管理されます。そのため結合後も結合前と同じkeyで呼び出すことができ、list型よりも結合後の扱いが単純です。dict型の結合を応用して複数の要素を同時に追加することも可能です。また、結合する変数同士に重複するkeyが存在する場合、最後に結合された変数に含まれる要素が採用されます。つまり値の更新が行われます。このように、dict型変数の連結テクニックを知っておくとpythonプログラミングの様々な場面で使うことができます。



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(要素を削除する方法)



Method | dict型変数を結合する方法

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

準備 | python notebookの新規作成

まずはpython notebookを用意しましょう。いつものpython_practiceのディレクトリに「practice_dict_concat」という名前の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型変数は

{**変数1, **変数2}

という形で*(アスタリスク)2つを使って結合します。変数1と2に共通するkeyが存在する場合、そのkeyに紐づく値は変数2のものが採用されます。

dict型変数を結合する例

dict型変数を結合してみましょう。以下のように、国名をkey、首都名を値とした変数を結合してください。

# define a dict variable
capital_cities_1 = {'Japan': 'Tokyo', 'France': 'Paris', 'Germany': 'Berlin'}

# print the variable
print('1:', capital_cities_1)

# define a dict variable
capital_cities_2 = {'Spain': 'Madrid', 'Italia': 'Roma'}

# print the variable
print('2:',  capital_cities_2)

# concatenate
capital_cities = {**capital_cities_1,**capital_cities_2}

# print the variable
print('1+2:', capital_cities)

この例では

capital_cities = {**capital_cities_1,**capital_cities_2}

というところで、capital_cities_1とcapital_cities_2を結合しています。この例を実行すると、

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

と出力されます。capital_citiesにはcapital_cities_1とcapital_cities_2の要素が格納されています。



ベタ打ちで連結する例 | 複数要素を同時に追加する

ベタ打ちの値をdict型にして連結することもできます。これを利用すると、既存のdict型変数に復数の要素を同時に追加することができます。以下を実行してみましょう。

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

# print the variable
print('original:', capital_cities)

# concatenate the variable
capital_cities = {**capital_cities, **{'Spain': 'Madrid', 'Italia': 'Roma'}}

# print the variable
print('concatenated:', capital_cities)

この例では

capital_cities = {**capital_cities, **{'Spain': 'Madrid', 'Italia': 'Roma'}}

というところで変数を結合しています。2つめの変数はベタ打ちのdict型変数です。このように記述することで、既存の変数capital_citiesに要素を2つ追加しています。この例を実行すると

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

と出力されます。



Keyに重複がある場合の例 | 後ろの変数で更新される

連結するdict変数にkeyの重複がある場合、2つ目の変数の要素が採用されます。1つめの変数に格納されている要素は破棄されます。以下を実行してみましょう。

# define a dict variable
capital_cities_1 = {'Japan': 'Tokyo', 'France': 'Bordeaux', 'Germany': 'Munich'}

# print the variable
print('1:', capital_cities_1)

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

# print the variable
print('2:',  capital_cities_2)

# concatenate
capital_cities = {**capital_cities_1,**capital_cities_2}

# print the variable
print('1+2:', capital_cities)

# overwritten elements
print('France:', capital_cities['France'])
print('Germany:', capital_cities['Germany'])

この例では、capital_cities_1のkey = France、Germanyの要素がcapital_cities_2の要素で更新されています。Spain, Italiaについてはcapital_cities_2の要素が追加されるだけです。この例を実行すると、

1: {'Japan': 'Tokyo', 'France': 'Bordeaux', 'Germany': 'Munich'}
2: {'Spain': 'Madrid', 'Italia': 'Roma', 'France': 'Paris', 'Germany': 'Berlin'}
1+2: {'Japan': 'Tokyo', 'France': 'Paris', 'Germany': 'Berlin', 'Spain': 'Madrid', 'Italia': 'Roma'}
France: Paris
Germany: Berlin

と出力されます。France, Germanyが更新されているのが確認できますね。



Result | 練習問題

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

  1. dict型変数prefectural_capitals_1を以下のkeyと値で作成し、print文で出力してください。
    • key1: Hokkaido, 値1: Hakodate
    • key2: Kanagawa, 値2: Yokohama
  2. dict型変数prefectural_capitals_2を以下のkeyと値で作成し、print文で出力してください。
    • key1: Okinawa, 値1: Naha
    • key2: Aichi, 値2: Nagoya
    • key3: Hokkaido, 値2: Sapporo
  3. prefectural_capitals_1とprefectural_capitals_2を結合し、変数prefectural_capitalsを作成してください。
    さらにprint文で変数prefectural_capitalsを出力してください。



練習問題の回答例

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

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



Conclusion | まとめ

最後までご覧いただきありがとうございます!
今回はdict型変数を結合する方法を解説しました。複数の要素を同時に追加したり、要素を更新するのに応用することも可能です。実際に様々なコードを書いていくことでコツを掴むことができます!pythonプログラミングのレベルアップをしていきましょう!

以上「python入門講座 | dict型の使い方6(辞書の結合)」でした!
またお会いしましょう!Ciao!



References | 参考

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

Pythonの参考教科書

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