Wie finde ich die Anzahl der Schlüssel in einem Hash, wie die Verwendung von $#
für Arrays?Wie kann ich die Anzahl der Schlüssel in einem Hash in Perl finden?
Antwort
scalar keys %hash
oder nur
keys %hash
, wenn Sie bereits in einem skalaren Kontext sind, z.B. my $hash_count = keys %hash
oder print 'bighash' if keys %hash > 1000
.
Übrigens findet $#array
nicht die Anzahl der Elemente, es findet den letzten Index. scalar @array
findet die Anzahl der Elemente.
wir wie dieses zu
my $keys = keys(%r) ;
print "keys = $keys" ;
0+(keys %r)
Ich fand dies nach in so geschrieben – joe
der folgenden weniger zurückkehren können, dass die Anzahl der Schlüssel in der Hash. Sie können es mögen, wenn Sie gern die $#array
-Stil, Dinge zu tun (oder Prägnanz) sind:
$#{$hash};
KRITISCH EDIT:
Halten Sie auf ... das ist interessant. Es funktioniert, wenn Sie es als eine Array-Referenz verwenden möchten, aber nicht, wenn Sie es außerhalb verwenden. So nützlich es ist, wenn Sie die letzte Taste Ihrer Hash zugreifen möchten, vorausgesetzt, dass Sie Ihre Schlüssel als ein Array in ein temporäres zugewiesen haben: Check this out:
%hash = ("barney" => "dinosaur", "elmo" => "monster");
@array = sort {$a cmp $b} keys %hash;
print $array[$#{$hash}];
# prints "elmo"
Diese Antwort hat mich überrascht, also habe ich es ausprobiert und ...es funktioniert nicht. – dave4420
@Dave: Überprüfen Sie die kritische Bearbeitung oben. Danke für die Köpfe hoch. – Zaid
@Zaid: Ersetze '$ # {$ hash}' mit '-1'. '$ array [-1]' bedeutet immer das letzte Element von '@ array' (und' $ array [-2] 'bedeutet immer das zweitletzte, usw.). '$ hash' ist nicht verwandt mit'% hash'. In Ihrem Code sieht Perl, dass Sie eine undefinierte Variable als Array-Referenz verwenden. Sie gibt also vor, dass es * eine Array-Referenz ist. Probiere 'Warnungen verwenden; Benutze strict; 'am Anfang und schau was Perl dann sagt. – dave4420
Aber nicht nach Perl 5.10:
use feature ":5.10";
my %p =();
say $#%p;
# $# is no longer supported
und schlimmer:
use feature ":5.10";
my %p = (a=>1, b=>2, c=>3);
say $#{%p};
# -1
Dies wird in der einfachen Weise arbeiten und für jede Größe eines Hash.
skalare Schlüssel drucken% hash;
Tut mir leid, aber ... wie unterscheidet sich das von der stark aufgestuften, akzeptierten Antwort, die vor 7 Jahren gepostet wurde, außer mit 'print'? –
skalare Schlüssel drucken% hash;
OR
$ X = Schlüssel% hash; drucken $ X;
(Keys% hash den Wert des Schlüssels in der Liste Zusammenhang, dass weitere Änderungen in den Skalarkontext zurückkehren (wenn auf skalaren Variablen zugewiesen wird) .)
- 1. Wie zählt man die Anzahl der Schlüssel in einem Hash?
- 2. Wie kann ich zwei Arrays einem Hash in Perl zuweisen?
- 3. Wie kann ich prüfen, ob ein Schlüssel in einem tiefen Perl-Hash existiert?
- 4. Wie konvertiere ich ein Array zu einem Hash in Perl?
- 5. Pushing eine Liste der Schlüssel/Wert-Paare in Perl Hash
- 6. Wie kann ich den kleinsten Wert in einem Perl-Hash von Hashes von Arrays finden?
- 7. entfernen Redundanz in einem Perl-Hash
- 8. Wie bekomme ich die Anzahl der Schlüssel in einer Hash-Tabelle in Lua?
- 9. Wie finden Sie, ob Werte eines Arrays die Schlüssel von Hash in Perl sind?
- 10. Perl: Wie Schlüssel Reihenfolge von Hash speichern?
- 11. Wie überprüfe ich, ob ein Schlüssel in einem Hash in Perl existiert?
- 12. Wie finden Sie Schlüssel eines Hash?
- 13. Wie überprüft man, ob Hash-Schlüssel JSON in Perl enthalten?
- 14. Wie kann ich einem Hash-Schlüssel mehrere Werte zuweisen?
- 15. Perl, Hash in Array konvertieren
- 16. Erstellen Sie einen Perl-Hash mit einem Array als Schlüssel
- 17. Wie kann ich Hash-Schlüssel-Lookup-Groß-und Kleinschreibung beachten?
- 18. Liefert Perl garantiert konsistent geordnete Hash-Schlüssel?
- 19. Wie kann ich einen Hash von Hashes in Perl erstellen?
- 20. Kann ich einen Dateinamen von einem Dateihandle in Perl finden?
- 21. Wie kann ich die Anzahl der Datensätze in einem Oracle PL/SQL-Cursor finden?
- 22. Warnung - „Ungerade Anzahl von Elementen in Hash-Zuordnung“ in Perl
- 23. Wie kann ich wiederholte Buchstaben mit einem Perl Regex finden?
- 24. Wie rufe ich einen Funktionsnamen auf, der in Perl in einem Hash gespeichert ist?
- 25. Wie deaktiviere ich die Autovivifizierung in Perl?
- 26. JSON zu Hash machen, dann diesen Hash mit einem anderen Hash in Perl vergleichen
- 27. Redis: Gibt es eine Grenze für die Anzahl der Schlüssel, die ich speichern kann?
- 28. Finden Sie die Anzahl der Objekte in einem JSON-Array
- 29. Perl regex mehrzeiligen Spiel in die Hash-
- 30. Wie kann ich die Anzahl der Seiten in einer PDF-Datei in Perl abrufen?
# $ + 1 - wir werden keine Elemente erhalten. Ich meine das für $ # – joe
Ah, ich verstehe. Nun, ich würde immer noch 'scalar @ array' über' $ # array + 1' empfehlen. :) – chaos
gibt es einen bestimmten Grund dafür – joe