Ruby 排序嵌套散列错误“;can';t将符号转换为整数“;
我不明白为什么会失败Ruby 排序嵌套散列错误“;can';t将符号转换为整数“;,ruby,Ruby,我不明白为什么会失败 1.9.3p0 :022 > hash = Hash.new => {} 1.9.3p0 :023 > hash["jon"] = [:name=>"jon",:age=>22] => [{:name=>"jon", :age=>22}] 1.9.3p0 :024 > hash["bob"] = [:name=>"bob",:age=>19] => [{:name=>"bob", :ag
1.9.3p0 :022 > hash = Hash.new
=> {}
1.9.3p0 :023 > hash["jon"] = [:name=>"jon",:age=>22]
=> [{:name=>"jon", :age=>22}]
1.9.3p0 :024 > hash["bob"] = [:name=>"bob",:age=>19]
=> [{:name=>"bob", :age=>19}]
1.9.3p0 :025 > hash["sid"] = [:name=>"sid",:age=>25]
=> [{:name=>"sid", :age=>25}]
1.9.3p0 :026 > hash
=> {"jon"=>[{:name=>"jon", :age=>22}], "bob"=>[{:name=>"bob", :age=>19}], "sid"=>[{:name=>"sid", :age=>25}]}
1.9.3p0 :027 > hash.sort_by { |k, v| v[:age] }
TypeError: can't convert Symbol into Integer
from (irb):27:in `[]'
from (irb):27:in `block in irb_binding'
from (irb):27:in `each'
from (irb):27:in `sort_by'
from (irb):27
from /usr/share/ruby-rvm/rubies/ruby-1.9.3-p0/bin/irb:16:in `<main>'
1.9.3p0 :028 > hash.sort_by { |k, v| v[:age].to_i }
TypeError: can't convert Symbol into Integer
from (irb):28:in `[]'
from (irb):28:in `block in irb_binding'
from (irb):28:in `each'
from (irb):28:in `sort_by'
from (irb):28
from /usr/share/ruby-rvm/rubies/ruby-1.9.3-p0/bin/irb:16:in `<main>'
1.9.3p0 :029 >
1.9.3p0:022>hash=hash.new
=> {}
1.9.3p0:023>散列[“jon”]=[:name=>“jon”,:age=>22]
=>[{:name=>“jon”,:age=>22}]
1.9.3p0:024>散列[“bob”]=[:name=>“bob”,:age=>19]
=>[{:name=>“bob”,:age=>19}]
1.9.3p0:025>散列[“sid”]=[:名称=>“sid”,:年龄=>25]
=>[{:name=>“sid”,:age=>25}]
1.9.3p0:026>散列
=>{“jon”=>[{:姓名=>“jon”,:年龄=>22}],“bob”=>[{:姓名=>“bob”,:年龄=>19}],“sid”=>[{:姓名=>“sid”,:年龄=>25}]
1.9.3p0:027>hash.sort_by{k,v | v[:age]}
TypeError:无法将符号转换为整数
from(irb):27:in`[]'
from(irb):27:in`block in irb_binding'
发件人(irb):27:在“每个”
发件人(irb):27:“排序依据”中的
起始(irb):27
from/usr/share/ruby-rvm/rubies/ruby-1.9.3-p0/bin/irb:16:in`'
1.9.3p0:028>hash.sort_by{k,v|v[:age].to|i}
TypeError:无法将符号转换为整数
from(irb):28:in`[]'
from(irb):28:in`block in irb_binding'
发件人(irb):28:在'each'中
from(irb):28:in'sort_by'
来自(irb):28
from/usr/share/ruby-rvm/rubies/ruby-1.9.3-p0/bin/irb:16:in`'
1.9.3p0:029>
本文建议它应该可以工作:您的语法已关闭
hash["jon"] = [:name=>"jon",:age=>22]
意味着
hash["jon"] = [{:name=>"jon",:age=>22}]
因此,请将代码更改为:
hash = Hash.new
hash["jon"] = {:name=>"jon",:age=>22}
hash["bob"] = {:name=>"bob",:age=>19}
hash.sort_by { |k, v| v[:age] }
你的语法不正确
hash["jon"] = [:name=>"jon",:age=>22]
意味着
hash["jon"] = [{:name=>"jon",:age=>22}]
因此,请将代码更改为:
hash = Hash.new
hash["jon"] = {:name=>"jon",:age=>22}
hash["bob"] = {:name=>"bob",:age=>19}
hash.sort_by { |k, v| v[:age] }
或者使用
hash.sort_by{k,v | v[0][:age]}
,但您的方式更好。:)或者使用hash.sort_by{k,v | v[0][:age]}
,但您的方式更好。:)