Làm cách nào để nối thêm băm vào băm b trong Perl mà không sử dụng vòng lặp?Làm thế nào tôi có thể tham gia hai băm trong Perl mà không cần sử dụng vòng lặp?
Trả lời
Nếu bạn có nghĩa là mất đoàn dữ liệu của họ, chỉ cần làm:
%c = (%a, %b);
Tại sao không% a = (% a,% b); công việc? % a được "xóa" – biznez
Nó hoạt động cho tôi: "% a = ('a' => 'b', 'c' => 1);% b = ('c' => 'd');% a = (% a,% b); in tham gia (',', bản đồ {"'$ _' => \" $ {a {$ _}} \ ""} phím% a), "\ n"; " Các mục từ% b với cùng một khóa được ưu tiên, nhưng các mục khác từ% a có mặt sau công đoàn. – outis
@ ykhoo: nó hoạt động. – ysth
Bạn cũng có thể sử dụng lát sáp nhập một băm thành khác:
@a{keys %b} = values %b;
Lưu ý rằng các mục trong% b sẽ ghi đè các mục trong% a có cùng khóa.
Đối với tín dụng bổ sung, với giá trị băm trong a và b, chúng tôi thực hiện @ {$ a} {keys% $ b} = giá trị% $ b; – daotoad
Tôi hy vọng điều này sẽ hiệu quả hơn so với trả lời khác, bởi vì một trong đó tái tạo băm cũng cho các mục đã tồn tại, trong khi điều này chỉ thêm các phím cho các mục mới. Nếu có nhiều mục trong% a, so với% b, sự khác biệt có thể đáng kính. – bart
Có thể. Cách tiếp cận của tôi cũng đi% b hai lần. Nếu% b lớn hơn% a thì kỹ thuật kia có thể nhanh hơn. Nhanh nhất của tất cả có thể là một vòng lặp, nhưng OP không muốn điều đó. – outis
Điều này sẽ hợp nhất băm và cũng tính đến các mục không xác định, vì vậy chúng không thay thế nội dung.
my %hash = merge(\%hash1, \%hash2, \%hash3);
sub merge {
my %result;
%result = %{ $_[0] };
shift;
foreach my $ref (@_) {
for my $key (keys %{$ref}) {
if (defined $ref->{$key}) {
$result{$key} = $ref->{$key};
}
}
}
return %result;
}
my %c = %a;
map {$c{$_} = $b{$_}} keys %b;
- 1. Làm cách nào để đặt lại băm hoàn toàn mà không sử dụng vòng lặp for?
- 2. Làm cách nào để lọc một mảng mà không sử dụng vòng lặp trong Perl?
- 3. Có cách nào tôi có thể in mảng String mà không sử dụng cho vòng lặp?
- 4. Tôi có thể làm gì khi sử dụng awk mà tôi không thể làm trong Perl?
- 5. Làm thế nào tôi có thể trao đổi hai biến Perl mà không sử dụng thứ ba?
- 6. Làm thế nào tôi có thể cài đặt mô-đun Perl mà không cần sử dụng CPAN.pm?
- 7. Làm cách nào để khởi tạo các giá trị trong băm không có vòng lặp?
- 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ể hợp nhất hai băm mà không ghi đè các khóa trùng lặp trong Ruby?
- 10. Làm thế nào để trả về một dải ô trong VBA mà không cần sử dụng vòng lặp?
- 11. Sự khác nhau giữa tham gia vòng lặp lồng nhau và tham gia băm trong SQL Server 2008
- 12. 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?
- 13. Làm thế nào tôi có thể tham gia một subquery sử dụng Zend_Db_Select
- 14. 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?
- 15. Làm thế nào để bạn tham gia hai bảng bằng cách sử dụng Django mà không cần sử dụng sql thô?
- 16. Tham gia hai dòng trong vim mà không cần di chuyển con trỏ
- 17. Tôi có thể sử dụng git rebase như thế nào mà không cần phải đẩy mạnh?
- 18. Làm thế nào tôi có thể chuyển biến vòng lặp Bash của tôi tới trình thông dịch Perl?
- 19. 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?
- 20. SQL tham gia hai bảng không có khóa/quan hệ
- 21. 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?
- 22. Tôi có thể tham gia tài liệu Excel bằng cách sử dụng PHPExcel như thế nào?
- 23. Có tham số nào tôi có thể sử dụng trong Java hoạt động với tất cả các vòng lặp cho mỗi vòng không?
- 24. Thêm tiền tố khi sử dụng tham gia trong Perl
- 25. MySQL - Tham gia hai bảng không trùng lặp?
- 26. Tôi có thể kéo phần tử tiếp theo từ trong vòng lặp Perl foreach không?
- 27. Làm cách nào để tôi có thể tham gia hai tệp csv trong R?
- 28. Làm thế nào tôi có thể nhận được một số hàng trong DBI mà không cần chạy hai cuộc gọi riêng biệt để xử lý?
- 29. Làm thế nào tôi có thể kiểm tra rằng "cái gì" là một băm trong Perl?
- 30. Tôi có thể tham gia nhiều bảng SQL bằng cách sử dụng ID như thế nào?
Tại sao bạn không muốn sử dụng một vòng lặp? –