通过Ruby输入CSV中的Hash,而不是从哈希中选择相同的VAULE



我最近正在学习Ruby,我想知道我是否可以通过Ruby输入CSV中的CSV(每行都是Hash),而不是从每个哈希中选择相同的值,以及是否有任何值匹配的值打印所有相同值的密钥。

test.csv

person_name,breath_place

玛丽,印第安纳州

约翰,芝加哥

肖恩,印第安纳州

杰森,纽约

莫妮卡,芝加哥

红宝石代码(尚未完成)

require 'csv' 
input_file = ARGV[0]
hash = {}
CSV.foreach(input_file, headers: true) do |row|
  row.each do |line|
    person_name, birth_place = line.chomp.split(",")
    hash[person_name] = birth_place
  end
end

结果应该像这样:

[{indiana =>&quot"玛丽"&quot&quot'sean;},{芝加哥=>&quot" john"

有任何建议还是模型?感谢您的任何帮助。

在这种情况下看起来您不需要CSV

hash = {}
input_file = ARGV[0]
File.new(input_file).readlines.each { |line|
  next if line =~ /birth_place/ # ignore headers
  name, bp = line.chomp.split(',')
  (hash[bp] ||= []) << name # create an array if it does not exist yet
}
puts hash

# ⇒ {"Indiana"=>["Mary", "Sean"], "Chicago"=>["John", "Monica"], "New york"=>["Jason"]}

希望它有帮助。

相关内容

  • 没有找到相关文章

最新更新