我最近正在学习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"]}
希望它有帮助。