[英]How do I map (and sort) values from a hash of hashes?
我有一個哈希哈希,如下所示:
%hash = ( a => { b => 1, c =>2, d => 3}, a1 => { b => 11, c =>12, d => 13}, a2 => { b => 21, c =>22, d => 23} )
我想提取“ b”元素並將其放入數組。 現在,我正在遍歷散列來執行此操作,但是我認為可以通過使用map來稍微提高效率。 我很確定,如果這是一個哈希數組,我會使用類似以下的方法:
@hasharray = ( { b => 1, c =>2, d => 3}, { b => 11, c =>12, d => 13}, { b => 21, c =>22, d => 23} ) @array = map { ($_->{b} => $_) } @hasharray
如果我錯了,請原諒我,我仍在學習map的工作原理。 但是我想知道的是,我將如何映射散列的哈希? 使用地圖甚至可能嗎? 我還沒有找到任何這樣做的例子。
更好的是,此代碼中的下一步是對數組進行填充后對其進行排序。 我很確定這是可能的,但是我對使用map自行解決還不夠聰明。 我將如何一次性完成所有這些工作?
謝謝。 賽斯
這將提取並排序所有“ b”:
my @array = sort { $a <=> $b } map $_->{b}, values %hash;
這會在@array
填充數組引用的排序列表,每個列表都包含b
的值和它來自的hashref。
my @array = sort {$$a[0] <=> $$b[0]}
map { [$$_{b} => $_] }
values %hash;
my @sorted_hashes = map {$$_[1]} @array;
采取第二種解決方案,並將values %hash
替換為@hasharray
:
@array = map { ($_->{b} => $_) } values %hash;
(並且不要忘記;
來終止該語句。)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.