Làm cách nào để tìm số lượng khóa trong băm, như sử dụng $#
cho mảng?Làm thế nào tôi có thể tìm thấy số lượng khóa trong một băm trong Perl?
Trả lời
scalar keys %hash
hoặc chỉ
keys %hash
nếu bạn đã có trong một bối cảnh vô hướng, ví dụ my $hash_count = keys %hash
hoặc print 'bighash' if keys %hash > 1000
.
Ngẫu nhiên, $#array
không tìm thấy số lượng phần tử, nó tìm thấy chỉ mục cuối cùng. scalar @array
tìm số lượng phần tử.
chúng ta có thể sử dụng như thế này quá
my $keys = keys(%r) ;
print "keys = $keys" ;
0+(keys %r)
tôi tìm thấy điều này sau khi được đăng trong số – joe
Sau đây sẽ trả lại một ít mà số lượng các phím trong băm của bạn. Bạn có thể thích nó nếu bạn thích các $#array
kiểu làm việc (hoặc conciseness):
$#{$hash};
QUAN TRỌNG EDIT:
Giữ trên ... Đây là thú vị. Nó hoạt động nếu bạn muốn sử dụng nó như là một tham chiếu mảng, nhưng không phải nếu bạn sử dụng nó bên ngoài. Vì vậy, nó rất hữu ích nếu bạn muốn truy cập chìa khóa cuối cùng của băm của bạn, miễn là bạn đã gán phím của bạn như là một mảng để một temp: Check this out:
%hash = ("barney" => "dinosaur", "elmo" => "monster");
@array = sort {$a cmp $b} keys %hash;
print $array[$#{$hash}];
# prints "elmo"
Câu trả lời này làm tôi ngạc nhiên, vì vậy tôi đã thử nó và ...nó không hoạt động. – dave4420
@Dave: Kiểm tra chỉnh sửa quan trọng ở trên. Cảm ơn cho những người đứng đầu lên. – Zaid
@Zaid: thay thế '$ # {$ hash}' bằng '-1'. '$ array [-1]' luôn luôn có nghĩa là phần tử cuối cùng của '@ array' (và' $ array [-2] 'luôn có nghĩa là phần tử thứ hai, cuối cùng, vv). '$ hash' không liên quan đến'% hash'. Trong mã của bạn, perl thấy bạn sử dụng một biến không xác định như là một tham chiếu mảng, do đó giả vờ rằng nó * là * một tham chiếu mảng. Hãy thử 'sử dụng cảnh báo; sử dụng nghiêm ngặt; 'ngay từ đầu và xem những gì perl nói sau đó. – dave4420
Nhưng không phải sau khi Perl 5.10:
use feature ":5.10";
my %p =();
say $#%p;
# $# is no longer supported
và tồi tệ hơn:
use feature ":5.10";
my %p = (a=>1, b=>2, c=>3);
say $#{%p};
# -1
này sẽ làm việc theo cách dễ dàng và đối với bất kỳ kích thước của một băm.
in các khóa vô hướng% băm;
Xin lỗi nhưng ... điều này khác với câu trả lời được chấp nhận nhiều, được chấp thuận, được đăng cách đây 7 năm, ngoài việc sử dụng 'in'? –
in các khóa vô hướng% băm;
OR
$ X = khóa% băm; in $ X;
(Keys% băm trả về giá trị của phím trong bối cảnh danh sách những thay đổi sâu hơn vào bối cảnh vô hướng (khi gán cho biến vô hướng) .)
- 1. Làm cách nào tôi có thể hợp nhất nhiều băm thành một băm trong Perl?
- 2. Làm thế nào tôi có thể kiểm tra rằng "cái gì" là một băm trong Perl?
- 3. Trong Perl, làm thế nào tôi có thể gọi một phương thức có tên tôi có trong một chuỗi?
- 4. Làm thế nào tôi có thể sử dụng băm làm đối số cho các chương trình con trong Perl?
- 5. Tôi làm cách nào để có được số lượng trang trong một tệp PDF trong Perl?
- 6. Làm thế nào tôi có thể tìm thấy OWNER của một đối tượng trong Oracle?
- 7. Làm thế nào tôi có thể tìm thấy vị trí của một trận đấu regex trong Perl?
- 8. Làm cách nào tôi có thể tham chiếu đến giá trị băm cụ thể trong Perl?
- 9. Làm cách nào tôi có thể xem liệu một băm Perl đã có một khóa nhất định?
- 10. Làm thế nào tôi có thể tìm thấy rò rỉ bộ nhớ trong chương trình Perl dài hạn?
- 11. tìm thấy bên trong một MongoDB băm
- 12. Trong mercurial làm thế nào tôi có thể tìm thấy changesets có chứa một chuỗi?
- 13. Tạo một hàm băm Perl với một mảng làm khóa
- 14. Làm thế nào tôi có thể lưu trữ ảnh chụp regex trong một mảng trong Perl?
- 15. Lọc một băm băm trong perl
- 16. Làm thế nào tôi có thể tìm thấy đường dẫn đến một bao gồm trong Symfony2?
- 17. Làm thế nào để tìm khóa của băm?
- 18. Làm thế nào tôi có thể làm số học 64 bit trong Perl?
- 19. Làm thế nào tôi có thể tìm thấy một người dùng với tham số GUID (objectGUID) trong Active Directory
- 20. Làm thế nào tôi có thể chuyển một băm bằng cách sử dụng máy khách và máy chủ trong Perl?
- 21. Làm thế nào để tìm hiểu xem một băm Perl là đa chiều?
- 22. Làm thế nào tôi có thể thấy những gì capybara được tìm thấy trong một bước dưa chuột thất bại?
- 23. Làm thế nào tôi có thể tìm các chữ cái lặp lại với một regex Perl?
- 24. Làm thế nào tôi có thể thấy các khóa toàn cục trong mysql (innodb)?
- 25. Làm thế nào để xóa một băm Perl
- 26. Làm thế nào tôi có thể bọc một chuỗi trong Perl?
- 27. Làm cách nào để duy trì thứ tự các khóa tôi thêm vào một băm Perl?
- 28. Làm thế nào tôi có thể thấy những khóa vim nghĩ tôi đang đánh?
- 29. Làm thế nào tôi có thể tạo một băm Perl từ một mảng với các khóa và một mảng khác với các giá trị?
- 30. Làm thế nào tôi có thể đoán mã hóa của một chuỗi trong Perl?
$ # + 1 - chúng tôi sẽ không nhận được các yếu tố. tôi có nghĩa là với $ # – joe
Ah, tôi hiểu rồi. Vâng, tôi vẫn sẽ đề nghị 'scalar @ array' trên' $ # array + 1'. :) – chaos
có bất kỳ lý do cụ thể nào cho rằng – joe