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) |