
目標
「インデックス式」を利用した「辞書」の要素の追加方法を理解する。
「setdefaultメソッド」を利用した「辞書」の要素の追加方法を理解する。
「updateメソッド」を利用した「辞書」の要素の追加・更新方法を理解する。
「辞書」の要素の追加
「辞書」の要素の追加方法
「辞書」の要素を追加する方法には「インデックス式」を利用する方法と「setdefault メソッド」「updataメソッド」を利用する方法があります。
「インデックス式」を利用した要素の追加方法
「インデックス式」を利用して要素を追加する場合は「辞書名[キー名] = 値」のように記述します。
サンプルプログラム
vegetables = {
'tomato' :[150, 50],
'onion' :[100, 45],
'cucumber':[45, 34],
'carrot' :['null','null'],
'eggplant':[98, 67],
'potato' :[68, 101]
}
# 「辞書名[キー名] = 値」として新しい要素を追加。
vegetables['cabbage' ] = [135, 47]
# 新しい要素を追加後の辞書の表示
print(vegetables)
実行結果(キー’cabbage’、値[135, 47]の新しい要素が追加されます。)

サンプルプログラム(辞書作成時に「’cabbage’ :[0, 0]」を追加し、その後、インデックス式を利用して’cabbage’の値を変更しています。)
vegetables = {
'tomato' :[150, 50],
'onion' :[100, 45],
'cucumber':[45, 34],
'carrot' :['null','null'],
'eggplant':[98, 67],
'potato' :[68, 101],
'cabbage' :[0, 0]
}
# 現在の辞書の表示
print(vegetables)
# 「辞書名[既存のキー名] = 値」とすると、既存のキーがペアとする値が変更されます 。
vegetables['cabbage' ] = [135, 47]
# 新しい要素を追加後の辞書の表示
print(vegetables)
実行結果(’cabbage’の値が変更されます。)

「setdefault メソッド」を利用した値の追加方法
インデックス式を利用した値の追加方法では意図せずに要素の書き換えが行われることがあります。これに対してsetdefault メソッドを利用すると「既に存在するキー(key)」が利用された場合は、要素の更新を行わず、「存在しないキー(key)」が利用された場合のみ要素の追加が行えます。
サンプルプログラム
vegetables = {
'tomato' :[150, 50],
'onion' :[100, 45],
'cucumber':[45, 34],
'carrot' :['null','null'],
'eggplant':[98, 67],
'potato' :[68, 101],
'cabbage' :[0, 0]
}
# 現在の辞書の表示
print(vegetables)
# 「辞書名.setdefault(キー名, 値)」として新しい要素を追加する場合、
# キーが既に存在する場合は処理されません。
vegetables.setdefault('cabbage',[135, 47])
# 新しい要素を追加後の辞書の表示
print(vegetables)
実行結果

vegetables = {
'tomato' :[150, 50],
'onion' :[100, 45],
'cucumber':[45, 34],
'carrot' :['null','null'],
'eggplant':[98, 67],
'potato' :[68, 101],
'cabbage' :[0, 0]
}
# 現在の辞書の表示
print(vegetables)
# 「辞書名[キー名] = 値」として新しい要素を追加。
vegetables.setdefault('broccoli',[160, 42])
# 新しい要素を追加後の辞書の表示
print(vegetables)
実行結果

「update メソッド」を利用した辞書の値の追加・更新方法
辞書の要素の更新は「インデックス式」で行えることを確認しましたが、より簡単に行う方法として「update メソッド」の利用があります。「update メソッド」を利用すると、「要素の追加」、「複数要素の追加」、「複数の値の同時更新」などが行えます。
「update メソッド」の利用方法(1)
vegetables = {
'tomato' :[150, 50],
'onion' :[100, 45],
}
# 最初の辞書の表示
print('最初の辞書')
print(vegetables, end='\n\n')
vegetables.update(cucumber = [0, 0])
# 「cucumber」の要素を追加後の辞書
print('「cucumber」の要素を追加後の辞書')
print(vegetables, end='\n\n')
vegetables.update(carrot = [0, 0],
eggplant = [0, 0],
potato = [0, 0]
)
# 更に3要素を追加した辞書
print('更に3要素を追加した辞書')
print(vegetables, end='\n\n')
vegetables.update(cucumber = [45, 34],
carrot = ['null','null'],
eggplant = [98, 67],
potato = [68, 101]
)
# 要素の値を変更した後の辞書
print('複数要素の値を変更した後の辞書')
print(vegetables)
実行結果

「update メソッド」の利用方法(2)
「updataメソッド」を利用すると辞書に対して別の辞書の要素を追加することができます。この場合、「辞書.update(別の辞書)」のように記述します。
サンプルプログラム
vegetables = {
'tomato' :[150, 50],
'onion' :[100, 45],
'cucumber':[45, 34],
}
another_vegetables = {
'carrot' :['null','null'],
'eggplant': [98, 67],
'potato' :[68, 101]
}
# 最初の辞書の表示
print('最初の辞書')
print(vegetables, end='\n\n')
vegetables.update(another_vegetables)
# 別の辞書の各要素を追加した後の辞書
print('複数要素の値を変更した後の辞書')
print(vegetables)
実行結果

今回は以上になります。

ブックマークのすすめ
「ほわほわぶろぐ」を常に検索するのが面倒だという方はブックマークをお勧めします。ブックマークの設定は別記事にて掲載しています。

