1

ハッシュがある場合:

%hash = ("Dog",1,"Cat",2,"Mouse",3,"Fly",4);

このハッシュの最初のX要素を抽出するにはどうすればよいですか。たとえば、最初の3つの要素が必要な場合、%newhashには( "Dog"、1、 "Cat"、2、 "Mouse"、3)が含まれます。

私は大きなハッシュ(〜8000キー)で作業しています。

4

3 に答える 3

5

「このハッシュの最初のX要素」は何の意味もありません。最初の3つの要素を数値順に並べますか?

my %hash = ( 'Dog' => 1, 'Cat' => 2, 'Mouse' => 3, 'Fly' => 4 );
my @hashkeys = sort { $hash{$a} <=> $hash{$b} } keys %hash;
splice(@hashkeys, 3);

my %newhash;
@newhash{@hashkeys} = @hash{@hashkeys};
于 2012-11-21T03:14:28.260 に答える
0

次のようなものを使用することをお勧めします。

my %hash = ("Dog",1,"Cat",2,"Mouse",3,"Fly",4);
for ( (sort keys %hash)[0..2] ) {
    say $hash{$_};
}
于 2012-11-21T02:52:37.810 に答える
0

1番目の配列が必要です。

my %hash = ("Dog" => 1,"Cat"=>2,"Mouse"=>3,"Fly"=>4);
my @array;
foreach $value (sort {$hash{$a} <=> $hash{$b} }
           keys %hash)
{
  push(@array,{$value=>$hash{$value}});
}

#get range:
my @part=@array[0..2];
print part of result;
print $part[0]{'Cat'}."\n";
于 2012-11-21T02:58:00.787 に答える