преобразовать хэш-ключ в целое число в рубине - PullRequest
0 голосов
/ 27 февраля 2012

Я инициализировал хеш из текстового файла. Если я не ошибаюсь, ключ в настоящее время является строкой. Как я могу сделать это целым числом? Любая помощь будет принята с благодарностью.

Код:

products_file = File.open("files.txt")
products = {}
while !products_file.eof?
  x, *products[x] = products_file.gets.chomp.split(",")
  a = products[x]
  a[0].strip!
  a[1] = a[1].strip.to_f
end
puts products

Файл:

199, Shoes, 59.99
211, Shirts, 19.99
245, Hats, 25.99
689, Coats, 99.99
712, Beanies, 6.99

Мой результат:

{"199"=>["Shoes", 59.99], "211"=>["Shirts", 19.99], "245"=>["Hats", 25.99], "689"=>["Coats", 99.99], "712"=>["Beanies", 6.99]}

Ответы [ 2 ]

3 голосов
/ 08 ноября 2014

Я бы сделал Hash[ hash.keys.map(&:to_i).zip(hash.values) ]

1 голос
/ 27 февраля 2012

Вы можете использовать inject для создания нового хеша с целочисленными ключами:

hash = {"199"=>["Shoes", 59.99], "211"=>["Shirts", 19.99]}

p hash.inject({}) { |memo, item| memo[Integer(item[0])] = item[1]; memo }
  # => {199=>["Shoes", 59.99], 211=>["Shirts", 19.99]}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...