起初對不起我的英語 - 我希望你能理解我。perl:shuffle value-sorted hash?
有一個哈希:
$hash{a} = 1;
$hash{b} = 3;
$hash{c} = 3;
$hash{d} = 2;
$hash{e} = 1;
$hash{f} = 1;
我想值(不是鍵)來排序,所以我有:
for my $key (sort { $hash{ $a } <=> $hash{ $b } } keys %hash ) { ... }
,起初我得到的所有值爲1的鑰匙,然後值2,等等。太好了。
但是,如果散列沒有改變,鍵的順序(在這個排序中)總是相同的。
問題:如何對排序結果進行洗牌,因此每次運行'for'循環時,我都會得到不同的值爲1,值爲2等的鍵的順序?
你想對它排序,但是對於具有相同值的鍵具有隨機順序,對嗎? –
我只在for循環中「排序」之前嘗試過洗牌(來自List :: Util),但顯然沒有工作,因爲它洗牌整個哈希..喬納森:是的,這是正確的。 – gib
等待,您是否想在按值排序之前隨機化返回的鍵的順序(排序後,仍然保持按值排序)或鍵的順序? – vol7ron