У меня есть следующий входной .txt файл:Hash с несколькими значениями
FROM TO
London Paris
London NYC
NYC Cairo
Cairo Rome
London Paris
и мне нужно, чтобы получить все уникальные адресат TO,
"London" -> ["Paris", "NYC"]
"NYC" -> ["Cairo]
"Cairo" -> ["Rome"]
, так что я могу сравнить их с другим массивом строки, которые выглядят так: A = [«Вена», «Люксембург», «Рим»].
Это решение не работает.
h = Hash.new{|hash, key| hash[key]}
lineCounter = 0
file = File.open(arcFile2,"r")
Line = file.first.split(" ")
file.each_line do |line|
if lineCounter == 0 then
lineCounter = lineCounter + 1
elsif lineCounter > 0 then
Line = line.split("\t")
from = Line[firstLine.index "from"].to_s.chomp
to = Line[firstLine.index "to"].to_s.chomp
h[from] = to
end
end
puts h["London"] & A
EDIT: код работает, когда я определяю мой хэш следующим образом:
h = Hash.new{|hash, key| hash[key] = Array.new}
h[from].push to
Теперь вопрос, как я могу добавить уникальные значения, потому что в этом случае у меня будет
"London" -> ["Paris", "NYC", "Paris"]
Какой аспект этого Безразлично Работа? – splrs
@splrs Я не знаю, как добавить массив в хэш-ключ, потому что это дает замену значений s.t. «Лондон» будет иметь только последнее значение, и в этом случае это «Париж», –