ruby - 数组到哈希转换的更好方法

标签 ruby arrays hash ruby-1.9

我有一个数组,我想将它转换为散列。我希望数组元素是键,所有值都相同。

这是我的代码:

h = Hash.new
myarr.each do |elem|
  h[elem] = 1
end

另一种选择是 following .我认为这与上面的解决方案没有太大区别。

h = Hash[ *myarr.collect { |elem| [elem, 1] }.flatten ]

我有更好的方法吗?

最佳答案

OP写的代码,也可以写成:-

a = %w(a b c d)
Hash[a.each_with_object(1).to_a]
# => {"a"=>1, "b"=>1, "c"=>1, "d"=>1}

如果你的 Ruby 版本 >= 2.1,那么

a.each_with_object(1).to_h
# => {"a"=>1, "b"=>1, "c"=>1, "d"=>1}

关于ruby - 数组到哈希转换的更好方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24602247/

相关文章:

Ruby 文件读取并行性

ruby 挑战 : experienced developers opinions

arrays - awk 命令结果放入数组

php - 在 MySQL 中使用什么函数来散列密码?

ruby - 在 Ruby 中搜索哈希键的简洁方法

ruby - 如何挤压 ruby

ruby - 网页抓取返回空字符串

sql - 将项目数组存储在SQL表中

javascript - 如何在两个数组中找到匹配值?

java - 将 BCrypt 与 char[] 一起使用