Jak znaleźć liczbę kluczy w haszdzie, na przykład za pomocą tablic?Jak znaleźć liczbę kluczy w haszowniku w Perlu?
Odpowiedz
scalar keys %hash
lub po prostu
keys %hash
jeśli jesteś już w kontekście skalarnym, np my $hash_count = keys %hash
lub print 'bighash' if keys %hash > 1000
.
Nawiasem mówiąc, $#array
nie znajduje liczby elementów, znajduje ostatni indeks. scalar @array
znajduje liczbę elementów.
możemy używać jak to też
my $keys = keys(%r) ;
print "keys = $keys" ;
0+(keys %r)
znalazłem to po wysłaniu w tak – joe
The poniżej powróci jeden mniejsza niż liczba klawiszy w swojej hash. Może ci się to podoba, jeśli są przywiązani do $#array
-Style robienia rzeczy (lub zwięzłość):
$#{$hash};
KRYTYCZNE EDIT:
Trzymaj się ... to jest interesujące. Działa, jeśli chcesz użyć go jako odwołania do tablicy, ale nie, jeśli używasz go na zewnątrz. Więc jest to przydatne, jeśli chcesz uzyskać dostęp do ostatniego klucza swojego hash, pod warunkiem, że masz przypisane klucze jako tablica do temp: Check this out:
%hash = ("barney" => "dinosaur", "elmo" => "monster");
@array = sort {$a cmp $b} keys %hash;
print $array[$#{$hash}];
# prints "elmo"
Ta odpowiedź mnie zaskoczyła, więc wypróbowałem to i ...to nie działa. – dave4420
@Dave: Sprawdź krytyczną edycję powyżej. Dzięki za heads up. – Zaid
@ Zaid: zastąp '$ # {$ hash}' z '-1'. '$ array [-1]' zawsze oznacza ostatni element '@ array' (i' $ array [-2] 'zawsze oznacza drugi do końca, itd.). '$ hash' nie ma związku z'% hash'. W twoim kodzie perl widzi, że używasz nieokreślonej zmiennej jako odwołania do tablicy, więc udaje, że * jest * odwołaniem do tablicy. Spróbuj użyć ostrzeżeń; użyj ścisłego; 'na początku i zobacz, co mówi perl. – dave4420
Ale nie po Perl 5.10:
use feature ":5.10";
my %p =();
say $#%p;
# $# is no longer supported
i gorzej:
use feature ":5.10";
my %p = (a=>1, b=>2, c=>3);
say $#{%p};
# -1
To działa w prosty sposób i dla jakiejkolwiek wielkości hash.
wydrukuj klucze skalarne% hash;
Przepraszam, ale ... jak to się różni od mocno przegłosowanej, zaakceptowanej odpowiedzi, opublikowanej 7 lat temu, innej niż użycie 'print'? –
wydrukuj klucze skalarne% hash;
OR
$ X = klucze% hash; wydrukuj $ X;
(Klawisze skrótu% zwrotu wartości kluczy w kontekście listowym, że dalsze zmiany do kontekście skalarnym (podczas przypisywania do zmiennej skalarnej) .)
- 1. Znalezienie liczbę kluczy w obiekcie
- 2. Jak przekonwertować ciąg na liczbę w Perlu?
- 3. Jak przekonwertować liczbę na tekst w Perlu?
- 4. MongoDB: jak policzyć liczbę kluczy w dokumencie?
- 5. Znaleźć brakującą liczbę w sekwencji
- 6. Swift: Uzyskaj liczbę kluczy w słowniku
- 7. Jak mogę znaleźć liczbę elementów w tablicy?
- 8. Jak znaleźć liczbę przewrotów w tablicy?
- 9. javascript Jak znaleźć liczbę dzieci w obiekcie
- 10. Jak znaleźć liczbę dni w bieżącym miesiącu
- 11. Jak znaleźć liczbę słów w ciągu?
- 12. Jak ograniczyć maksymalną liczbę równoległych wątków w perlu
- 13. Jak znaleźć liczbę "kompletnych" obrazów?
- 14. Jak znaleźć liczbę linii UILabel
- 15. Jak znaleźć najbliższą liczbę pierwszą?
- 16. Jak znaleźć kopiuj/wklej (duplikat, klon) w Perlu?
- 17. Jak znaleźć jedną liczbę w ciągu znaków w Pythonie?
- 18. Znaleźć liczbę obiektów w tablicy json
- 19. Regex znaleźć liczbę całkowitą w ciąg
- 20. Django: znaleźć wszystkie odwołania odwrotne kluczy obcych
- 21. Dlaczego ten klucz ciągu w haszowniku przekonwertowany na symbol?
- 22. Jak znaleźć liczbę zagnieżdżonych list na liście?
- 23. Jak znaleźć liczbę wierszy dla wszystkich tabel w Postgresie
- 24. Jak znaleźć najmniejszą i największą liczbę w tablicy?
- 25. jak znaleźć liczbę wystąpień podciągu w ciągu znaków vb.net
- 26. Jak znaleźć liczbę błędów w widoku ASP.NET MVC?
- 27. Jak mogę znaleźć liczbę cykli Hamiltonian w kompletnym nieukierunkowanym grafie?
- 28. Jak znaleźć liczbę elementów za pomocą jQuery
- 29. Jak znaleźć liczbę dni między dwiema datami
- 30. Jak mogę znaleźć liczbę argumentów funkcji szablonu?
$ # + 1 - nie będziemy się elementów. Mam na myśli, że za $ # – joe
Ah, widzę. Cóż, nadal zalecałbym 'skalar @ array' ponad' $ # array + 1'. :) – chaos
czy istnieje jakiś szczególny powód dla tej – joe