访问哈希数组

use*_*500 -1 ruby arrays hash

我试图从哈希数组中访问一个值.示例数组如下所示:

family = [
            [
              { "Homer" => 1, "Marge" => 2, "Lisa" => 3, "Maggie" => 4, 
                "Abe" => 5, "Santa's Little Helper" => 6
              }
            ], 
            [
              { "Homer" => 2, "Marge" => 4, "Lisa" => 6,           
                "Maggie" => 8, "Abe" => 10, "Santa's Little Helper" => 12
              }
            ] 
         ]
Run Code Online (Sandbox Code Playgroud)

如果我尝试使用下面的语句访问"Homer"数组indexed 0(family[0])中的键的哈希值,并希望获得值1:

family[0]["Homer"]
Run Code Online (Sandbox Code Playgroud)

我收到一个错误

"test.rb:4:in `[]': can't convert String into Integer (TypeError)"
Run Code Online (Sandbox Code Playgroud)

在一个简单的语句中,有关如何能够在这样的数组中访问哈希值的任何建议?

Aru*_*hit 8

你应该试试family[0][0]["Homer"].

在你的情况下family[0]给你:

[{ "Homer" => 1, "Marge" => 2, "Lisa" => 3, "Maggie" => 4, "Abe" => 5,"Santa Little Helper" => 6}]
Run Code Online (Sandbox Code Playgroud)

这是一个数组.你想要的哈希是在它里面,可以得到family[0][0]:

{ "Homer" => 1, "Marge" => 2, "Lisa" => 3, "Maggie" => 4, "Abe" => 5,"Santa Little Helper" => 6}
Run Code Online (Sandbox Code Playgroud)

所以你现在可以使用family[0][0]["Homer"]哪个会给你价值1.

数组索引始终是数值.如果您收到can't convert String into Integer (TypeError)错误消息,则会引发异常,因为您尝试使用无法转换为整数的字符串来访问数组元素.