Arrays 将数组的Ruby数组转换为哈希数组
我有一个数组:Arrays 将数组的Ruby数组转换为哈希数组,arrays,ruby,hash,Arrays,Ruby,Hash,我有一个数组: data = [ ["Smith", "Bob", "Male"], ["Jim", "Tim", "Male"], ["Welch", "Anne", "Female"] ] 我将如何将其转换为: data = [ {:first_name => "Smith", :last_name => "Bob", :gender => "Male"}, {:first_name => "Jim", :last_name => "Ti
data = [
["Smith", "Bob", "Male"],
["Jim", "Tim", "Male"],
["Welch", "Anne", "Female"]
]
我将如何将其转换为:
data = [
{:first_name => "Smith", :last_name => "Bob", :gender => "Male"},
{:first_name => "Jim", :last_name => "Tim", :gender => "Male"},
{:first_name => "Welch", :last_name => "Anne", :gender => "Female"}
]
您可以这样做:
fields = [:first_name, :last_name, :gender]
data.map {|row| fields.zip(row).to_h }
#=> [{:first_name=>"Smith", :last_name=>"Bob", :gender=>"Male"}, {:first_name=>"Jim", :last_name=>"Tim", :gender=>"Male"}, {:first_name=>"Welch", :last_name=>"Anne", :gender=>"Female"}]
请记住,只有当元素的顺序与字段的顺序相同时,此操作才有效。您可以执行以下操作:
fields = [:first_name, :last_name, :gender]
data.map {|row| fields.zip(row).to_h }
#=> [{:first_name=>"Smith", :last_name=>"Bob", :gender=>"Male"}, {:first_name=>"Jim", :last_name=>"Tim", :gender=>"Male"}, {:first_name=>"Welch", :last_name=>"Anne", :gender=>"Female"}]
请记住,只有当元素的顺序与字段的顺序相同时,这才有效。您也可以使用
Struct
:
presenter = Struct.new(:first_name, :last_name, :gender)
data.map { |e| presenter.new(*e).to_h }
#=> [{:first_name=>"Smith", :last_name=>"Bob", :gender=>"Male"},
# {:first_name=>"Jim", :last_name=>"Tim", :gender=>"Male"},
# {:first_name=>"Welch", :last_name=>"Anne", :gender=>"Female"}]
您还可以使用
Struct
:
presenter = Struct.new(:first_name, :last_name, :gender)
data.map { |e| presenter.new(*e).to_h }
#=> [{:first_name=>"Smith", :last_name=>"Bob", :gender=>"Male"},
# {:first_name=>"Jim", :last_name=>"Tim", :gender=>"Male"},
# {:first_name=>"Welch", :last_name=>"Anne", :gender=>"Female"}]
您是如何获得AoA输入的?你能分享你尝试转换的代码吗?
data.map{f,l,g{:first_name=>f,:last_name=>l,:gender=>g}
你是如何获得AoA输入的?你能分享你尝试转换的代码吗?data.map{f,l,g{:first_name=>f,:last_name=>l,:gender=>g}
虽然这可以回答问题,但它没有提供任何上下文来解释如何转换或为什么转换。考虑一两句话来解释你的答案。这可能有助于提出这个问题的人,也有助于未来几代遇到这个答案的程序员。:-)虽然这可能回答了这个问题,但它没有提供任何上下文来解释如何或为什么。考虑一两句话来解释你的答案。这可能有助于提出这个问题的人,也有助于未来几代遇到这个答案的程序员。:-)