arrays - 如何在 Ruby 中将数组转换为另一个数组

标签 arrays ruby csv

我有一个像这样的多维数组:

myArray = [["Alaska","Rain","3"],["Alaska","Snow","4"],["Alabama","Snow","2"],["Alabama","Hail","1"]]

我想以这样的 CSV 输出结束。

State,Snow,Rain,Hail
Alaska,4,3,nil
Alabama,2,nil,1

我知道要按照我想要的方式将它输出到 CSV,我必须有这样的输出数组:

outputArray =[["State","Snow","Rain","Hail"],["Alaska",4,3,nil],["Alabama",2,nil,1]]

但我不知道如何走到这一步。 我试过使用 group_by 但没有成功。

最佳答案

这是一种使用中间散列的方法

h 最终看起来像这样

{"Alaska"=>{"Rain"=>"3", "Snow"=>"4"}, "Alabama"=>{"Snow"=>"2", "Hail"=>"1"}}

myArray = [["Alaska","Rain","3"],["Alaska","Snow","4"],["Alabama","Snow","2"],["Alabama","Hail","1"]]
myFields = ["Snow","Rain","Hail"]

h = Hash.new{|h, k| h[k] = {}} 
myArray.each{|i, j, k| h[i][j] = k }
p [["State"] + myFields] + h.map{|k, v| [k] + v.values_at(*myFields)}

输出

[["State", "Snow", "Rain", "Hail"], ["Alaska", "4", "3", nil], ["Alabama", "2", nil, "1"]]

关于arrays - 如何在 Ruby 中将数组转换为另一个数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30976041/

相关文章:

java - 使用单一条件选择数据的有效方法

ruby-on-rails - 我如何加快这个丑陋的查询?

Python:读取 csv 并打印到控制台。正在打印奇怪的字符

python - 使用 python panda 按月、年计算出现频率

regex - 如何在 AWK 中填写 CSV 中的空单元格?

java - java 数据对齐和排序

c++ - 将数组元素递增 1

if语句中的Python数组元素

ruby - 如何使用 RSpec 编写循环遍历一系列值的测试?

Ruby:是值列表中的字符串