Pythonの辞書型はキーと値をペアで管理するのに便利な変数の型です。
辞書型にキーを指定して値を追加する場合、キーの値を上書きする場合、そしてsetdefaultを使ったキーが存在しない時のみ値を追加する動作を確認します。
辞書型に存在しないキーを追加する
まずは普通に存在しないキーと値を追加します。
dic = {} dic[ "id" ] = "1" dic[ "name" ] = "太郎さん" print( "dic={0}".format( dic ) )
これを実行すると
dic={'id': '1', 'name': '太郎さん'}
になります。
キーと値が新たに追加されていますね。
辞書型で存在するキーの値を上書き(更新)する
次にキーがすでにある場合です。
値は指定されたもので上書き(更新)されます。
dic = {} dic[ "id" ] = "1" dic[ "name" ] = "太郎さん" print( "dic={0}".format( dic ) ) dic[ "name" ] = "次郎さん" print( "dic={0}".format( dic ) )
これを実行すると
dic={'id': '1', 'name': '太郎さん'} dic={'id': '1', 'name': '次郎さん'}
になります。
2つ目のprintでnameの値が更新されていることがわかりますね。
setdefaultで存在しないキーの値の追加をする
次はsetdefaultの確認です。
このsetdefaultはキーが存在しなければ値を追加し、存在した場合は何もしません。
値を上書き(更新)しません。
まずはキーが存在しない場合の値の追加を確認します。
dic = {} dic[ "id" ] = "1" dic[ "name" ] = "太郎さん" print( "dic={0}".format( dic ) ) dic[ "name" ] = "次郎さん" print( "dic={0}".format( dic ) ) dic.setdefault( "age" , "20" ) print( "dic={0}".format( dic ) )
これを実行すると
dic={'id': '1', 'name': '太郎さん'} dic={'id': '1', 'name': '次郎さん'} dic={'id': '1', 'name': '次郎さん', 'age': '20'}
になります。
3つ目のprintで「age」が存在しなかったために追加されているのがわかりますね。
setdefaultで存在するキーの値は上書き(更新)しない
最後にすでにキーが存在する場合はなにもしない(上書き(更新))しないということを確認します。
dic = {} dic[ "id" ] = "1" dic[ "name" ] = "太郎さん" print( "dic={0}".format( dic ) ) dic[ "name" ] = "次郎さん" print( "dic={0}".format( dic ) ) dic.setdefault( "age" , "20" ) print( "dic={0}".format( dic ) ) dic.setdefault( "age" , "25" ) print( "dic={0}".format( dic ) )
これを実行すると
dic={'id': '1', 'name': '太郎さん'} dic={'id': '1', 'name': '次郎さん'} dic={'id': '1', 'name': '次郎さん', 'age': '20'} dic={'id': '1', 'name': '次郎さん', 'age': '20'}
になります。
3つ目と4つ目の出力結果が同じになっていますね。
すでにあるキーの値はsetdefaultでは更新されません。
まとめ
Pythonの辞書型のメソッド「setdefalt」はすでにあるキーの値は上書き(更新)せずに、存在しない時のみ追加すると言ったことを実現する場合に非常に便利なメソッドです。
以上、Pythonで辞書にキーが存在しない時のみ要素を追加するsetdefaultでした。