Tôi có một băm băm, như vậy:Làm cách nào để ánh xạ (và sắp xếp) các giá trị từ băm băm?
%hash = (a => { b => 1, c =>2, d => 3}, a1 => { b => 11, c =>12, d => 13}, a2 => { b => 21, c =>22, d => 23})
tôi muốn trích xuất các yếu tố "b" và đặt nó vào một mảng. Ngay bây giờ, tôi đang lặp qua băm để làm điều này, nhưng tôi nghĩ rằng tôi có thể cải thiện hiệu quả một chút bằng cách sử dụng bản đồ để thay thế. Tôi khá chắc chắn rằng nếu điều này là một mảng băm, tôi muốn sử dụng một cái gì đó như thế này:
@hasharray = ({ b => 1, c =>2, d => 3}, { b => 11, c =>12, d => 13}, { b => 21, c =>22, d => 23}) @array = map { ($_->{b} => $_) } @hasharray
Hãy tha thứ cho tôi nếu tôi sai, tôi vẫn đang học cách đồ hoạt động. Nhưng những gì tôi muốn biết là làm thế nào tôi sẽ đi về lập bản đồ băm của băm? Điều này thậm chí có thể sử dụng bản đồ? Tôi chưa tìm thấy bất kỳ ví dụ nào về việc này.
Thậm chí tốt hơn, bước tiếp theo trong mã này là sắp xếp mảng sau khi được điền. Tôi khá chắc chắn điều này là có thể, nhưng tôi không đủ thông minh về việc sử dụng bản đồ để tìm ra chính bản thân mình. Làm thế nào tôi sẽ đi về việc này tất cả trong một shot?
Cảm ơn. Seth
Điều đó làm việc tuyệt vời, chính xác những gì tôi đang tìm kiếm. Tôi đã thay thế 26 dòng mã bằng mã này và cải thiện hiệu năng của hàm đó từ khoảng O (n) thành O (1). Cảm ơn! – sgsax
Vâng, nó vẫn phải lặp qua các giá trị của băm và sắp xếp chúng, vì vậy nó không thực sự là O (1). – Corey