Pythonの辞書(dict)に、要素を追加する方法についてまとめています。具体的には、次の3つの方法があります。
- 辞書[キー] = 値:キーがあれば更新、なければ追加
- setdefault():キーがあればそのまま、なければ追加
- update():別の辞書(dict2)のキーと値を、元の辞書(dict1)に追加/更新
これらは、既に存在するキーの値を更新するのか、まだ存在しない新しいキーと値を追加するのかなどによって使い方が分かれます。
それぞれ見ていきましょう。
1. キーが存在すれば更新、存在しなければ追加 | []
辞書に要素を追加する最も基本的な方法は、次のように、対象のキーを指定して値を追加するやり方です。
辞書[キー] = 値
新しいキーと値を指定した場合は、それらが追加されます。既に存在するキーを指定した場合は、そのキーの値が上書きされます。
以下をご覧ください。
dict = {"red":1, "blue":2, "yellow":3}
dict["white"] = 4 #新しいキーの場合は、そのキーと値を追加
dict["blue"] = 5 # 既に存在するキーの場合は値を上書き
print(dict)
これを使うと、空の辞書や初期化された辞書(値が全て同じの辞書)に、キーと値を効率的に追加していくことができます。
dict = {}
#キーと値を追加していきます。
dict["one"] = 1
dict["two"] = 2
dict["three"] = 3
print(dict)
なお、空の辞書は、dict()関数で、「dict = dict()」と引数を空にして作ることもできます。
2. キーが存在すればそのまま、存在しなければ追加 | setdefault()
既にキーが存在する時は何もせず、キーが存在しない場合のみ追加するには、 setdefault() メソッドを使います。次のように使います。
辞書.setdefault(キー, 値)
既にキーが存在する場合は、そのキーの値が何になっているのかを返します。そして、引数で値の指定を省略すると、値はNone(空)になります。
実際に見てみましょう。
dict = {'red':1, 'blue':2, 'yellow':3}
dict.setdefault('blue', 5) # キーが存在するので値を返す
キーが存在しなければ、そのキーと値を追加します。
dict.setdefault('white', 4)
print(dict) # キーが存在しない場合はキーと値を追加
キーのみで値を指定しない場合は、値はNoneになります。
dict.setdefault('black')
print(dict) # 値を指定しない場合は値がNoneのキーを追加
3. 別の辞書の値を追加/更新する | update()メソッド
update()メソッドでは、ある辞書に、別の辞書の要素を追加することができます。
次のように書きます。
要素を追加したい辞書.update(追加する辞書)
「要素を追加したい辞書」の側に、「追加する辞書」の要素が追加されます。同じキーが存在する場合は、その値が上書きされます。
以下をご覧ください。
dict1 = {'red':1, 'blue':2, 'yellow':3}
dict2 = {'yellow':30, 'white':4, 'black':5}
dict1.update(dict2)
print(dict1)
‘yellow’の値は更新され、’white’と’black’のキーと値は追加されています。
4. まとめ
いかがだったでしょうか。
それぞれの使い分けは、以下のように覚えておきましょう。
- 辞書に新しい要素を追加するには [] を使う。
- 重複するキーがあった場合には値を更新したくないならsetdefault()を使う。
- ある辞書に別の辞書の要素を追加したい場合はupdate()を使う。
コメント
コメント一覧 (2件)
こういうサンプルソースを探しています。
dict1 = {‘red’:1, ‘blue’:2, ‘yellow’:3}
dict2 = {‘yellow’:30, ‘white’:4, ‘black’:5}
dict1とdict2を結合して、下記のdict3のような形式にするにはどうすればよいでしょうか。
dict3 = {“result”:[{“red”:1, “blue”:2, “yellow”:3},{“yellow”:30, “white”:4, “black”:5}]}
通りすがりですが動くだけでよければこんな感じでかけますよ
動いただけなので処理が最適なのかまではみていませんが
PC / % cat test2.py
dict1 = {‘red’:1, ‘blue’:2, ‘yellow’:3}
dict2 = {‘yellow’:30, ‘white’:4, ‘black’:5}
result = []
result.append(dict1)
result.append(dict2)
dict3 = {}
dict3[‘result’] = result
print(dict3)
PC / % python3 test2.py
{‘result’: [{‘red’: 1, ‘blue’: 2, ‘yellow’: 3}, {‘yellow’: 30, ‘white’: 4, ‘black’: 5}]}