ruby、pythonのハッシュ/辞書の値取得

rubyにばかり慣れていたので、pythonの辞書から値を取得しようとして、キーがない場合にErrorになることに、ちょっとだけとまどいました。
せっかくなのでハッシュ/辞書の扱い方のメモを残しておきます。

python

my_dict = {"a": 1, "b": 2}

# 値の取得
print(my_dict["a"]) 
# => 1

# キーがない場合、KeyErrorが発生する
try:
    print(my_dict["c"])
except:
    print("KeyError")
# => KeyError

# あらかじめkeyがあるか調べるにはhas_key
if my_dict.has_key("c"):
    print(my_dict["c"])

# getではkeyがなくてもエラーにならない
print(my_dict.get("c"))
# => None

# デフォルト値を渡すこともできる
print(my_dict.get("c",'nothing'))
# => nothing

ruby

my_dict = {"a" =>  1, "b" =>  2}

# 値の取得
print(my_dict["a"]) 
# => 1

# キーがない場合、nilが返される
print(my_dict["c"])
# => nil

# あらかじめkeyがあるか調べるにはhas_key?
if my_dict.has_key?("c") 
    print(my_dict["c"])
end


# fetchではkeyがないとエラーになる
begin
  print(my_dict.fetch("c"))
rescue KeyError => e
  print "KeyError"
end
# => KeyError

# デフォルト値を渡すこともできる
print(my_dict.fetch("c",'nothing'))
# => nothing
用途 ruby python
値の取得(キーがない場合エラー) fetch(key) []
値の取得(キーがない場合nil、None) [] get(key)
値の取得(キーがない場合のためのデフォルト値を渡す) fetch(key, default=nil) get(key, default=None)
値の有無を調べる has_key?(key) has_key(key)