Если я читаю вход от STDIN в Ruby.Как мне поместить его в хеш-таблицу? - PullRequest
1 голос
/ 07 февраля 2012

Если я получу ввод,

Том 176

Джо 170

Как мне вставить хеш-таблицу, где

{: name => "Том",: высота => 176}

{: name => "Джо",: высота => 170}

Ответы [ 2 ]

4 голосов
/ 07 февраля 2012

Вывод, который вы цитируете, представляет собой массив хэшей, каждый хэш имеет только два ключа. Это действительно то, что вы хотите? Если это так, это делается так:

array = []
while line = gets do
    name, height = line.split
    array << { :name => name, :height => height.to_i }
end

Если вместо этого вам нужен хеш с именем в качестве ключей и высотой в качестве значений, он будет выглядеть следующим образом:

hash = {}
while line = gets do
    name, height = line.split
    hash[name] = height.to_i
end
1 голос
/ 07 февраля 2012

Если вам нужен хеш {name => height} , используйте Hash :: [] :

Hash[open("filename.txt").lines.map do |line| 
  name, height = line.split
  [name, height.to_i]
end]
#=> {"Joe"=>170, "Tom"=>176}

Если вам нужен массив хэшей:

open("filename.txt").lines.map do |line| 
  name, height = line.split
  {:name => name, :height => height.to_i}
end
#=> [{:name => "Tom", :height => 176}, {:name => "Joe", :height => 170}]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...