Как поместить элементы файла в хеш? -Рубин - PullRequest
3 голосов
/ 12 августа 2009

Итак, у меня есть файл в виде:

Key1   Value1
Key2   Value2
Key3   Value3

разделены вкладкой. У меня вопрос, как мне открыть этот файл и поместить его в хеш? Я пытался сделать:

 fp = File.open(file_path)

 fp.each do |line|
   value = line.chomp.split("\t")
   hash = Hash[*value.flatten]
 end

Но в конце этого цикла хеш @datafile содержит только самую последнюю запись ... Я вроде хочу все это .....

Ответы [ 2 ]

8 голосов
/ 12 августа 2009

hash[key] = value для добавления новой пары ключ-значение. hash.update(otherhash) для добавления пар ключ-значение из другого хеша в хеш.

Если вы делаете hash = foo, вы переназначаете хэш, теряя старое содержимое.

Так что для вашего случая вы можете сделать:

hash = {}
File.open(file_path) do |fp|
  fp.each do |line|
    key, value = line.chomp.split("\t")
    hash[key] = value
  end
end
0 голосов
/ 18 октября 2017

Применить ответ от https://stackoverflow.com/a/4120285/2097284:

hash = Hash[*File.read(file_path).split("\t")]

Это расширяется до

hash = Hash["Key1", "Value1", "Key2", "Value2", "Key3", "Value3"].

Для большей надежности замените "\t" на /\s+/ (чтобы разрешить любые виды пробелов).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...