如何在Ruby中为每个id创建哈希
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在Ruby中为每个id创建哈希相关的知识,希望对你有一定的参考价值。
我用Ruby Roo阅读了以下xls文件。
现在我想为这样的每个学生制作哈希。
132 = { "Design" => 6, "English" => 5, "Humanities" => 5, .... }
134 = { "Design" => 7, "English" => 6, "Humanities" => 6, .... }
...
...
以下是我所做的。它输出一些东西,但我需要建立起来创建哈希。
require_relative './subcorrelation/version'
require 'linefit'
require 'roo'
myfile='../data/msdataparts.xls'
workbook = Roo::Excel.new(myfile)
workbook.default_sheet = workbook.sheets.first
# Create a hash of the headers so we can access columns by name (assuming row
# 1 contains the column headings). This will also grab any data in hidden
# columns.
headers = Hash.new
workbook.row(1).each_with_index {|header,i|
headers[header] = i
}
# Iterate over the rows using the `first_row` and `last_row` methods. Skip
# the header row in the range.
((workbook.first_row + 1)..workbook.last_row).each do |row|
# Get the column data using the column heading.
studentid = workbook.row(row)
puts "{#studentid}"
end
更新
上述电线的输出。
[132.0, "Design", 6.0, "MYC665", "S2", 7.0]
[132.0, "English", 5.0, "MYC600", "S2", 7.0]
[132.0, "Humanities", 5.0, "MYC610", "S2", 7.0]
[132.0, "Languages", 6.0, "MYJ660", "S2", 7.0]
[132.0, "Math", 6.0, "MYC620", "S2", 7.0]
[132.0, "Music", 7.0, "MYC664", "S2", 7.0]
[132.0, "PE", 6.0, "MYC650", "S2", 7.0]
[132.0, "Science", 6.0, "MYC630", "S2", 7.0]
[132.0, "Theatre", 6.0, "MYC661", "S2", 7.0]
[134.0, "Design", 7.0, "MYC665", "S2", 7.0]
[134.0, "English", 6.0, "MYC600", "S2", 7.0]
[134.0, "Humanities", 6.0, "MYC610", "S2", 7.0]
[134.0, "Languages", 6.0, "MYS610", "S2", 7.0]
...
...
答案
hash_of_student_and_grades = ((workbook.first_row + 1)..workbook.last_row).each_with_object({}) do |row,hash|
# Get the column data using the column heading.
next if workbook.row(row).nil?
studentid = workbook.row(row)[0]
course = workbook.row(row)[1]
grade = workbook.row(row)[2]
hash[studentid.to_i] ||= {}
hash[studentid.to_i][course] = grade.to_i
end
puts hash_of_student_and_grades
应该给你你想要的哈希。
以上是关于如何在Ruby中为每个id创建哈希的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Ruby on Rails 4 中为 post 生成唯一的随机 id?