文法・環境 辞書

【python】辞書(dict)へ要素の追加、結合(連結)【update、setdefault、for文で追加など】

pythonの辞書(dict)の要素の追加方法、辞書同士の結合方法について、サンプルコードを交えながら紹介します。

辞書に要素を追加したり、辞書同士を結合する場合に、キーが重複した場合の処置についても解説しています。

本記事では、下記の内容を紹介しています。

この記事で分かること

■辞書への要素の追加方法

  • 辞書のキー(key)を指定して値(value)を追加
  • updateメソッドで要素を追加
  • setdefaultメソッドで要素を追加
  • リストとfor文で、辞書の要素を追加

■辞書の結合方法

  • updateメソッドで辞書を結合
  • for文で辞書を結合

スポンサーリンク

辞書への要素(データ)の追加方法

はじめに、辞書への要素の追加方法について説明します。

要素を追加する方法はいくつかあるので、それぞれの方法についてサンプルコードを交えながら順番に紹介します。

辞書のキー(key)を指定して値(value)を追加【キーが重複したら上書き】

もっとも基本的な、要素の追加方法です。

追加する辞書のキーを指定して、値を入力します。

この方法の場合、追加先の辞書にすでにキーが存在する場合は、値は上書きされます。

書き方

辞書[キー] = 値

以下、サンプルコードです。
キーが重複する場合は、値が上書きされます。

### キーを指定して値を追加
fruits_dict = {'Apple':100, 'Banana':200, 'Orange':100}
print(fruits_dict)
# {'Apple': 100, 'Banana': 200, 'Orange': 100}

fruits_dict['Grape'] = 500
print(fruits_dict)
# {'Apple': 100, 'Banana': 200, 'Orange': 100, 'Grape': 500}

### キーが重複した場合は上書き
fruits_dict['Apple'] = 150
print(fruits_dict)
# {'Apple': 150, 'Banana': 200, 'Orange': 100, 'Grape': 500}

updateメソッド【キーが重複したら上書き】

辞書のupdateメソッドを用いても要素を追加できます

updateメソッドの場合も前述の例と同様、キーが存在する場合は値が上書きされます。

書き方

辞書.update(キー=値)

以下、サンプルコードです。

### updateメソッドで要素を追加
fruits_dict = {'Apple':100, 'Banana':200, 'Orange':100}
print(fruits_dict)
# {'Apple': 100, 'Banana': 200, 'Orange': 100}

fruits_dict.update(Grape = 500, Peach = 200)
print(fruits_dict)
# {'Apple': 100, 'Banana': 200, 'Orange': 100, 'Grape': 500, 'Peach': 200}

### キーが重複した場合は上書き
fruits_dict.update(Apple = 150, Peach = 200)
print(fruits_dict)
# {'Apple': 150, 'Banana': 200, 'Orange': 100, 'Grape': 500, 'Peach': 200}

スポンサーリンク

setdefaultメソッド 【キーが重複したら上書きしない】

辞書のキーが存在した場合に、値を上書きしたくない場合は、setdefaultメソッドを使います

書き方

辞書.setdefault(キー, 値)

以下、サンプルコードです。

### setdefaultメソッドで要素を追加
fruits_dict = {'Apple':100, 'Banana':200, 'Orange':100}
print(fruits_dict)
# {'Apple': 100, 'Banana': 200, 'Orange': 100}

fruits_dict.setdefault('Grape', 500)
print(fruits_dict)
# {'Apple': 100, 'Banana': 200, 'Orange': 100, 'Grape': 500}

### キーが重複した場合は上書きしない
fruits_dict.setdefault('Apple', 150)
print(fruits_dict)
# {'Apple': 100, 'Banana': 200, 'Orange': 100, 'Grape': 500}

辞書の要素を、for文でリストから追加【キーが重複したら上書き】

次に、リストから、辞書のキーと値を追加する方法を紹介します。

サンプルコードでは、for文を使用しています
for文を使用することで、汎用性が高くなり様々な要素の追加パターンに対応できるようになります。

また、サンプルコードでは、zip関数を使用しています
zip関数を用いることで、for文の中で複数のリストの要素を同時に使用できるようになります

以下、サンプルコードです。
要素を追加する部分には、前述のキーを指定して値を入力する方法を用いています。

### リストから、辞書のキーと値を追加【キー重複で上書き】
fruits_dict = {'Apple':100, 'Banana':200, 'Orange':100}
print(fruits_dict)
# {'Apple': 100, 'Banana': 200, 'Orange': 100}

fruits_list = ['Apple', 'Peach', 'Lemon']
prices_list = [150, 200, 150]

for fruit, price in zip(fruits_list, prices_list):
    fruits_dict[fruit] = price
    
print(fruits_dict)
# {'Apple': 150, 'Banana': 200, 'Orange': 100, 'Peach': 200, 'Lemon': 150}

'Apple'のキーが重複していますが、値が上書きされています。

なお、zip関数については、下記の記事で紹介しています。

zip関数の基本的な使い方

辞書の要素を、for文でリストから追加【キーが重複したら上書きしない】

先ほどの例について、キーが重複した場合に、値が上書きされないサンプルコードです。

辞書の要素を追加する部分を、setdefaultメソッドに書き換えています。

### リストから、辞書のキーと値を追加【キー重複で上書きしない】
fruits_dict = {'Apple':100, 'Banana':200, 'Orange':100}
print(fruits_dict)
# {'Apple': 100, 'Banana': 200, 'Orange': 100}

fruits_list = ['Apple', 'Peach', 'Lemon']
prices_list = [150, 200, 150]

for fruit, price in zip(fruits_list, prices_list):
    fruits_dict.setdefault(fruit, price)
    
print(fruits_dict)
# {'Apple': 100, 'Banana': 200, 'Orange': 100, 'Peach': 200, 'Lemon': 150}

'Apple'のキーが重複していますが、値が上書きされていません。

スポンサーリンク

辞書(dict)の結合(連結)

つぎに、辞書同士の連結方法について、紹介します

辞書の連結方法もいくつか方法がありますので、それぞれについてサンプルコードを交えながら紹介します。

updateメソッドで辞書を結合【キーが重複したら上書き】

updateメソッドを用いて辞書を同士を結合できます

なお、辞書のキーが重複した場合は、追加する辞書の値で上書きされます。

書き方

追加先の辞書.update(追加する辞書)

以下、サンプルコードです。

### updateメソッドで辞書を結合
fruits_dict1 = {'Apple':100, 'Banana':200, 'Orange':100}
fruits_dict2 = {'Apple':150, 'Peach':200, 'Lemon':150}

fruits_dict1.update(fruits_dict2)
print(fruits_dict1)
# {'Apple': 150, 'Banana': 200, 'Orange': 100, 'Peach': 200, 'Lemon': 150}

'Apple'のキーが重複していますが、値は上書きされています。

for文で辞書を結合【キーが重複したら上書きしない】

つぎに、結合する辞書のキーが重複した場合に、値を上書きしないサンプルコードを紹介します。

for文とif文でキーが重複しないか確認し、重複しない場合に、要素を追加しています。

### for文で辞書のキーの重複チェックをして、辞書を結合
fruits_dict1 = {'Apple':100, 'Banana':200, 'Orange':100}
fruits_dict2 = {'Apple':150, 'Peach':200, 'Lemon':150}

fruits_dict_merged = fruits_dict1.copy()
for fruit, price in fruits_dict2.items() :
    if not fruit in fruits_dict_merged :
        fruits_dict_merged[fruit] = price
    else :
        pass

print(fruits_dict_merged)
# {'Apple': 100, 'Banana': 200, 'Orange': 100, 'Peach': 200, 'Lemon': 150}

> for fruit, price in fruits_dict2.items( ) :

辞書のitemsメソッドを用いて、辞書の全てのキーと値を取得し、fruitと、priceに渡しています。

> if not fruit in fruits_dict_merged :

追加先の辞書のキーに、追加する辞書のキーが含まれないか確認しています。
キーが重複しない場合に、要素として追加しています。

なお、辞書のitemsメソッドについては、下記の記事で紹介しています。

辞書のキーと値の取得方法

スポンサーリンク

まとめ

pythonの辞書の要素の追加方法、辞書同士の結合方法について紹介しました。

辞書を扱ううえで基本的な内容になるので、使い方は覚えておくようにしましょう。

スポンサーリンク

-文法・環境, 辞書
-,