ハッシュからキーと値を取り出しイテレータ処理

スポンサーリンク
スポンサーリンク
ライフスタイル関連のコンテンツ
お金 | 仕事 | 勉強 | プライベート | 健康 |
プログラミング関連のコンテンツ
C言語/C++入門 | Ruby入門 | Python入門 | プログラミング全般

ハッシュから、キーと値を取り出して、イテレータで処理する例を見てみます。
sort文の書き方とか、Rubyでは直感的に日本語を話すように書ける気がします。

スポンサーリンク

#puts "name => height のハッシュ"
hash = {
    "Takasi" => 175,
    "Youko" => 162,
    "Konta" => 183,
    "Fumiko" => 157
}
 
p hash.keys
p hash.values
 
puts "--- eachとキーで回す"
hash.keys.each{|name|
    print "#{name} is #{hash[name]} / "
}
puts
 
puts "--- each_key"
hash.each_key{|i|
    print "#{i} --- #{hash[i]} / " 
}
puts
 
puts "--- キーと値で回す"
hash.each{|key, value|
    print "#{key} => #{value} / "
}
puts
 
puts "--- each_value"
hash.each_value{|i|
    print "#{i}, "
}
puts
 
puts "--- 身長の低い順"
hash.keys.sort{|a, b|
    hash[a] <=> hash[b]
}.each{|name|
    puts "#{name}'s height is #{hash[name]}"
}
 
puts "--- 身長の高い順"
hash.keys.sort{|a, b|
    hash[b] <=> hash[a]
}.each{|name|
    puts "#{name}'s is #{hash[name]} cm"
}
 
puts "--- キーと値を両方取り出し"
p hash.to_a        # キーと値を一要素とする配列になる
hash_ta = hash.to_a
p hash_ta.pop
p hash    # 元のまま
p hash_ta    # popで破壊されている
 
puts "--- whileとshiftで回す"
while a = hash_ta.shift
    puts "#{a[0]} => #{a[1]}"
end
    

実行結果。

["Konta", "Youko", "Fumiko", "Takasi"]
[183, 162, 157, 175]
--- eachとキーで回す
Konta is 183 / Youko is 162 / Fumiko is 157 / Takasi is 175 /
--- each_key
Konta --- 183 / Youko --- 162 / Fumiko --- 157 / Takasi --- 175 /
--- キーと値で回す
Konta => 183 / Youko => 162 / Fumiko => 157 / Takasi => 175 /
--- each_value
183, 162, 157, 175,
--- 身長の低い順
Fumiko's height is 157
Youko's height is 162
Takasi's height is 175
Konta's height is 183
--- 身長の高い順
Konta's is 183 cm
Takasi's is 175 cm
Youko's is 162 cm
Fumiko's is 157 cm
--- キーと値を両方取り出し
[["Konta", 183], ["Youko", 162], ["Fumiko", 157], ["Takasi", 175]]
["Takasi", 175]
{"Konta"=>183, "Youko"=>162, "Fumiko"=>157, "Takasi"=>175}
[["Konta", 183], ["Youko", 162], ["Fumiko", 157]]
--- whileとshiftで回す
Konta => 183
Youko => 162
Fumiko => 157
スポンサーリンク
 
スポンサーリンク