Perl:是否可以对通过值阈值的散列进行子集化?
Perl: Is it possible to subset a hash passing a value threshold?
假设我有以下形式的散列:
%hash = ( a => 1, b => 2, c => 3 , d => 4 , e => 5 , f => 6 );
我能否通过阈值 3 获取此类哈希的子集,获取以下 %subhash
%subhash = ( c => 3 , d => 4 , e => 5 , f => 6 );
无需进入循环?谢谢
虽然 map
意味着循环:
my %subhash = map {
$hash{$_} >= 3
? ($_, $hash{$_})
: ()
} keys %hash;
在 5.20+
%subhash = %hash{ grep $hash{$_} >= 3, keys %hash }
(尽管 grep(和 map)仍然是一个循环)
假设我有以下形式的散列:
%hash = ( a => 1, b => 2, c => 3 , d => 4 , e => 5 , f => 6 );
我能否通过阈值 3 获取此类哈希的子集,获取以下 %subhash
%subhash = ( c => 3 , d => 4 , e => 5 , f => 6 );
无需进入循环?谢谢
虽然 map
意味着循环:
my %subhash = map {
$hash{$_} >= 3
? ($_, $hash{$_})
: ()
} keys %hash;
在 5.20+
%subhash = %hash{ grep $hash{$_} >= 3, keys %hash }
(尽管 grep(和 map)仍然是一个循环)