你可以做这样的事情:如果您在value
前需要colon
[4] pry(main)> foobar = ["ABC: OPEN", "123: OPEN", "FOO: CLOSED", "BAR: CLOSED", "XYZ: OPEN", "LMO: CLOSED"]
=> ["ABC: OPEN", "123: OPEN", "FOO: CLOSED", "BAR: CLOSED", "XYZ: OPEN", "LMO: CLOSED"]
[5] pry(main)> foobar.map { |i| i.split(": ") }.to_h
=> {"ABC"=>"OPEN",
"123"=>"OPEN",
"FOO"=>"CLOSED",
"BAR"=>"CLOSED",
"XYZ"=>"OPEN",
"LMO"=>"CLOSED"}
你也可以做这样的事情:
[14] pry(main)> foobar.map { |i| i.gsub(": ", " :") }.map { |j| j.split(" ") }.to_h
=> {"ABC"=>":OPEN",
"123"=>":OPEN",
"FOO"=>":CLOSED",
"BAR"=>":CLOSED",
"XYZ"=>":OPEN",
"LMO"=>":CLOSED"}
还有一个迭代,如果你需要的值是符号,你可以这样做:
[35] pry(main)> foobar.map { |i| i.split(": ") }.each_with_object({}) do |array, hash|
[35] pry(main)* hash[array.first] = array.last.to_sym
[35] pry(main)* end
=> {"ABC"=>:OPEN, "123"=>:OPEN, "FOO"=>:CLOSED, "BAR"=>:CLOSED, "XYZ"=>:OPEN, "LMO"=>:CLOSED}
这实际上是一个体面的代码高尔夫球问题。 – wberry 2014-11-23 18:01:06
是的。对不起,我已经适当地编辑了它 – 2014-11-23 18:15:29
'':OPEN'是否必须是字符串或符号? – Anthony 2014-11-23 18:16:28