Zugriff auf Array von Hashes
Ich versuche, Zugriff auf einen Wert aus einem array von hash. Ein Beispiel-array sieht wie folgt aus:
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
}
]
]
Wenn ich versuche, Zugriff auf den hash-Wert für den Schlüssel "Homer"
im array indiziert 0
(family[0]
) mit der Anweisung unten und hoffe, dass sich der Wert 1
:
family[0]["Homer"]
Bekomme ich eine Fehlermeldung, die sagt
"test.rb:4:in `[]': can't convert String into Integer (TypeError)"
Irgendwelche Vorschläge, wie man Zugriff auf einen hash-Wert in einem array, in einer einfachen Anweisung?
- Sie versuchen, Zugriff auf einen hash-Wert in einem array, das in ein größeres array.
- Versuchen
family.flatten!
und dann können Siefamily[0]["Homer"]
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sollten Sie versuchen
family[0][0]["Homer"]
.In Ihrem Fall
family[0]
gibt Sie :welcher ein array ist. Der hash, die Sie wollen, ist drin und kann man mit
family[0][0]
:So können Sie jetzt mit
family[0][0]["Homer"]
die geben Sie den Wert1
.Den array-Indizes sind immer numerische Werte. Wenn Sie eine
can't convert String into Integer (TypeError)
Fehlermeldung, dass eine Ausnahme geworfen wird, weil Sie versuchen, Zugriff auf array-element mit einem string kann nicht in eine Ganzzahl konvertiert.Du nicht eigentlich ein array von hashes. Sie haben ein array von arrays von hashes.
Ihre Fehler tritt auf, weil Sie Dereferenzierung einer Struktur mit
[0]
die Ihnen die ersten array von hashes, jetzt Sie versuchen, den Zugriff auf den Schlüssel'homer'
die nicht existieren, weil arrays sind kodiert durch ganze zahlen.Hier ist ein Beispiel, wie man sehen konnte alle der Werte sehen, wenn Sie
'homer'
auf Ihrem eigenen:Ausgabe:
@Arup Rakshit ist absolut richtig, über, wie man Ihren Wert. Aber Sie sollten auch wissen, dass Sie nicht ein array von hashes, Sie haben ein array von arrays, und diese sub-arrays, hashes enthalten. Basierend auf Ihrem Titel ich bin dem Schluss, dass Sie wahrscheinlich wollen eine Struktur, die mehr wie