gpt4 book ai didi

perl:洗牌值排序哈希?

转载 作者:行者123 更新时间:2023-12-02 06:06:53 25 4
gpt4 key购买 nike

首先对不起我的英语 - 我希望你能理解我。

有一个散列:

$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 等?

最佳答案

不太确定我是否理解您的需求,但是这样可以吗:

use List::Util qw(shuffle);

my %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 } } shuffle( keys %hash )) {
say "hash{$key} = $hash{$key}"
}

关于perl:洗牌值排序哈希?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8312764/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com