[英]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.