辞書(dict)は、キーと値のペアを保持するデータ構造ですが、既存のキーに対して新しい値を割り当てると、元の値が上書きされます。
しかし、重複するキーがある場合に上書きせずに新しい値を追加したいことがあります。
そのような場合には、以下のような方法を使うことができます。
辞書追加はsetdefaultで上書きしない
# 初期の辞書 car_prices = {'Toyota': 25000, 'Honda': 30000, 'Ford': 27000} # 新しい値を追加する car_prices.setdefault('Toyota', 28000) print(car_prices) # 出力: {'Toyota': 25000, 'Honda': 30000, 'Ford': 27000}
この方法では、setdefault()メソッドを使って新しいキーを追加しようとした場合に、
すでにキーが存在する場合は既存の値を返しますが、存在しない場合は指定したデフォルト値を設定します。
したがって、既存のキーがある場合は上書きされず、新しい値が追加されません。
collectionsモジュールのdefaultdictを利用する
from collections import defaultdict # defaultdictを作成する car_prices = defaultdict(int, {'Toyota': 25000, 'Honda': 30000, 'Ford': 27000}) # 新しい値を追加する car_prices['Toyota'] = 28000 print(car_prices) # 出力: defaultdict(<class 'int'>, {'Toyota': 25000, 'Honda': 30000, 'Ford': 27000})
defaultdictは、辞書のサブクラスであり、存在しないキーが指定された場合に自動的にデフォルト値を設定します。
ここでは、intをデフォルトファクトリとして設定していますが、他のデフォルトファクトリも使用できます。
この方法でも、既存のキーがある場合は上書きされず、新しい値が追加されます。
広告
まとめ
Pythonの辞書(dict)において、キーが重複する場合に新しい値を追加して上書きしない方法について説明しました。
setdefault()メソッドやdefaultdictを利用することで、キーが存在しない場合のみ値を追加することができます。
これらの方法を使うことで、辞書の操作においてキーの重複に関する問題を解決することができます。