簡體   English   中英

如何在Ruby中訪問哈希內的數組元素

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

這將獲取您的第一個鍵的值(在這種情況下,它是哈希中的第一個數組),然后通過索引檢索該數組的第二個元素。

在哈希上使用Hash#dig

哈希不能索引,因為不能保證它是有序的(盡管從實用上講,最近的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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM