散列中的重复值

时间:2016-05-12 15:09:31

标签: perl hash

第1项:Box1 第2项:Box1

第3项:Box2 第4项:Box2

我有一个哈希形式的输出(上面列出) 我想处理它,以便输出看起来像是

Box1 = {Item1,Item2} Box2 = {Item3,Item4}

1 个答案:

答案 0 :(得分:2)

根据您的要求,这是我能做的最多:

use strict;
use warnings;

use Data::Dumper;

my %items = (
    Item1 => 'Box1',
    Item2 => 'Box1',

    Item3 => 'Box2',
    Item4 => 'Box2',
);

my %boxes = ();

foreach my $item_name ( keys %items ){
    push @{ $boxes{ $items{$item_name} } }, $item_name;
}

print "Boxes: ".Dumper( \%boxes );

并打印:

Boxes: $VAR1 = {
          'Box1' => [
                      'Item1',
                      'Item2'
                    ],
          'Box2' => [
                      'Item4',
                      'Item3'
                    ]
        };