[英]How to access an array element inside a hash in Ruby
我有一个像这样的位置的坐标数组的哈希:
cities = {
"l10"=> [41.84828634806966,-87.61184692382812],
"l11"=> [41.86772008597142,-87.63931274414062],
"l12"=> [41.88510316124205,-87.60498046875],
"l13"=>[41.84930932360913,-87.62420654296875]
}
要访问第一个数组中的第二个值,我尝试过:
puts cities[0][1][1]
我希望它打印出-87.61184692382812
,但不是。 它给了我一个错误。
我正在尝试遍历哈希。 通过使用访问它
puts cities["l10"][1]
不起作用。 但
puts cities[0][1][1]
当我将其转换为数组时,它可以工作。
如果将哈希表设置为数组,则可以执行此操作,否则对于第一次访问,您必须使用一个键(好吧,即使0也可以是一个键,但哈希表中不存在该键)
cities.to_a[0][1][1]
=> -87.61184692382812
cities["l10"][1]
=> -87.61184692382812
这是访问哈希的第一个键的第二个值的一种方法:
cities.values.first[1]
# => -87.61184692382812
这将获取您的第一个键的值(在这种情况下,它是哈希中的第一个数组),然后通过索引检索该数组的第二个元素。
哈希不能索引,因为不能保证它是有序的(尽管从实用上讲,最近的MRI实现会保持插入顺序)。 相反,您需要按键查找,然后索引到存储为值的Array中。 在支持Hash#dig的最新版本中,可以使用以下语法:
cities.dig 'l10', 1
#=> -87.61184692382812
另外,您可以将Hash对象转换为数组Array,然后像在原始文章中尝试的那样进行索引。 例如:
cities.to_a[0][1][1]
#=> -87.61184692382812
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.