0

さまざまなカテゴリの特定の位置(およびそれらのかなりの数;〜40,000)でいくつかの値(ランダムに発生する)を追跡する必要があるコードがあるため、ハッシュのハッシュが最適であると考えました方法として、カテゴリをキーの最初のレイヤーとして、位置を 2 番目として、値を値として使用します。何かのようなもの:

%HoH = {
      'cat1' => {
                  '7010' => 19,
                  '6490' => 13,
                  '11980' => 2
               }
      'cat2' => {
                  '7010' => 28,
                  '10470' => 13,
                  '205980' => 54
               }
        }

次に、両方のカテゴリの順に並べ替えて印刷し、次に配置して、次のような出力ファイルを取得する必要があります。

cat1    6490     13
cat1    7010     19
...
cat2    7010     28

しかし、ネストされた並べ替えの構文を理解することはできません (または、このアプローチよりも優れたアイデアを持っている人はいますか?)

4

1 に答える 1

1

Perl を使用すると、ハッシュのハッシュを繰り返し処理しながら、キーを効率的に並べ替えることが簡単になります。

for my $cat (sort keys %HoH) {
    # numerical sort:
    for my $digits (sort { $a <=> $b } keys %{$HoH{$cat}}) {
        print join("\t", $cat, $digits, $HoH{$cat}{$digits}) . "\n";
    }
}
于 2014-09-26T16:54:21.913 に答える