まず結論

get() は、辞書から値を取り出す方法のひとつです。

user = {"name": "モコ"}

print(user.get("name"))
print(user.get("age"))

"name" はあるので "モコ" が返ります。
"age" はないので、エラーではなく None が返ります。

こんなときに読む記事です

次のようなところで止まった人向けです。

  • user.get("name") の読み方が分からない
  • user["name"] との違いが分からない
  • KeyErrorを出さずに値を取りたい

まずは「get() は、なければ空の返事をしてくれる取り出し方」と考えると入りやすいです。

絵で見るなら

辞書を、ラベル付きの引き出し棚だと考えます。

get("name") は、name の引き出しを探します。

引き出しがあれば中身を取り出します。
なければ、棚を壊さずに「見つからなかったよ」という返事をします。

[]で取り出す場合

辞書では、角括弧でも値を取り出せます。

user = {"name": "モコ"}

print(user["name"])

これは「name は必ずあるはず」と思って取り出す書き方です。

ないキーを指定すると、KeyError になります。

user = {"name": "モコ"}

print(user["age"])

"age" がないので、Pythonは止まってエラーを出します。

get()で取り出す場合

get() は、キーがないときもエラーにせず進めます。

user = {"name": "モコ"}

print(user.get("age"))

この場合は None が返ります。

None は「値がない」という印です。
エラーではありません。

代わりの値を決められる

get() では、見つからないときの値を自分で決められます。

user = {"name": "モコ"}

print(user.get("age", "未設定"))

"age" がないので、"未設定" が返ります。

画面に表示するときは、None よりも "未設定" のような言葉のほうが分かりやすいことがあります。

[]とget()の使い分け

最初は、次のように分けると読みやすいです。

必ずあるはずのキー: user["name"]
ないかもしれないキー: user.get("age")

get() は便利ですが、何でも get() にすればよいわけではありません。

必ずあるはずのキーがないなら、エラーで気づいたほうが直しやすいこともあります。

手を動かすミニ練習

次の辞書で、namelevelget() で取り出してみましょう。

user = {"name": "モコ"}

print(user.get("name"))
print(user.get("level", "初心者"))

level は辞書にありません。
そのため、代わりに "初心者" が返ります。