ruby - 迭代哈希集合

标签 ruby hash mapping

{"Journal"=>[[4, -785.0], 
             [13, -21.9165000915527], 
             [14, -213.008995056152], 
             [15, -50.074499130249]]}

你如何在 Ruby 中迭代这个散列,你将如何分离键和值?

最佳答案

Ruby 有一个统一的迭代接口(interface)。 Ruby 中的所有集合都有一个名为 each 的方法,它允许您迭代集合中的每个元素。但是请注意,显式迭代是一种代码味道。您应该主要使用高级迭代器,例如 mapreduceselectfindreject 等等。

在这个集合是Hash 的特殊情况下,生成给您的 block 的每个元素都是一个由键和值组成的双元素数组:

print hsh.reduce('') {|s, el|
  s << "The key is #{el.first} and the value is #{el.last}.\n"
}

多亏了 Ruby 的解构绑定(bind),你可以简单地将数组的两个元素绑定(bind)到你的 block 中的两个变量,你将不需要不断地拆散数组:

print hsh.reduce('') {|s, (k, v)|
  s << "The key is #{k} and the value is #{v}.\n"
}

关于ruby - 迭代哈希集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3493583/

相关文章:

sorting - 定义自定义 sortperm 函数

mapping - 如果没有唯一的 URL 路径,如何在 Moovweb 项目中设置映射文件?

ruby - 如何正确布局网格

Python __hash__ 用于等值对象

ruby - AASM:将状态机定义与类定义分开

javascript - Dojo MD5 散列不是以 base 16 表示法

algorithm - 为什么不对所有内容都使用哈希/哈希表?

java - 如何在hibernate连接映射上指定固定参数?

ruby-on-rails - 应用程序初始化期间的 Rake 任务

ruby - 为什么我会在最新版本的 RVM 中看到这条正在运行的 after_cd 消息?