我散列引用到一個哈希看起來像這樣如何通過降序/升序值和升序/降序鍵對perl中的散列引用進行排序?
my %hey = (
144 => 'Abc_test1',
25 => 'sample2',
114 => 'User',
145 => 'abc_test2',
);
我想輸出順序
Abc_test1
User
abc_test2
sample2
,我應該能夠在某個變量
任何幫助存儲?
我散列引用到一個哈希看起來像這樣如何通過降序/升序值和升序/降序鍵對perl中的散列引用進行排序?
my %hey = (
144 => 'Abc_test1',
25 => 'sample2',
114 => 'User',
145 => 'abc_test2',
);
我想輸出順序
Abc_test1
User
abc_test2
sample2
,我應該能夠在某個變量
任何幫助存儲?
Sort正在使用表達式來計算排序事物的順序,因此它不僅限於比較一件事物。在你的情況,你想是這樣的......
my @sorted_values = map $hey{$_}, sort {$hey{$b} cmp $hey{$a} or $a <=> $b} keys %hey;
它首先比較哈希值以降序排序。在兩個值相同的情況下,它會比較鍵值並按升序排序。
沒有包需要。如果它不是'%hey',按照你的問題改變哈希名稱。 –
不適用於我..它需要任何顯式包嗎?因爲我的錯誤日誌顯示它缺少顯式包名稱。但它工作正常在通用示例中,如果我在散列表中交換了鍵和值,那麼即使你的代碼工作正常,你的代碼也能正常工作嗎? –
對不起,我的散列表我的散列表實際上是一個引用,你能相應地修改你的代碼嗎? –
values=[sort {$a<=>$b and $hey->{$a} cmp $hey->{$b}} keys %$hey],
這不提供問題的答案。以批判或作者作出澄清,離開低於其信息的評論中。 - [來自評論](/ review/low-quality-posts/17669833) – TommySM
'我的foreach $值(排序{$一個<=> $ B}值%嘿嘿){ 說$值; }'。你可以通過用'push(@array,$ value)'替換'say $ value'來輕鬆地將它們存儲在一個數組中;'(不要忘記在'foreach'之前聲明'@ array'。 –
@JohnDoe我會將它添加爲一個答案 –
正如我看到你想要2種排序方法很好解釋[這裏](https://perlmaven.com/how-to-sort-a-hash-in-perl) –