1

hashrefs構造の次のhashrefがあります。

$hashref = {
    user1 => {
        key1 => "unique_value1",
        ...
        key99 => "value1_99"
    },
    ...
    user26 => {
        key1 => "unique_value2",
        ...
        key99 => "value1_99"
    },

    user99 => {
        key1 => "unique_value1",
        ...
        key99 => "value99_99"
    },
};

私が欲しいもの:

$hashref = {
    "unique_value1" => ["user1","user99"],
    "unique_value2" => ["user26"]
};

私は歴史的に作成時に反転マップを作成しましたが、怠惰になっています。

これに使用できる1行の砂糖はありますか?

ありがとうございました。

4

2 に答える 2

2

一方通行:

my $h; 
push (@{$h->{$hashref->{$_}{key1}}}, $_) for keys %$hashref;
于 2013-01-11T02:01:01.870 に答える
0
my %users_by_uval;
for my $user_id (%$users) {
    push @{ $users_by_uval{ $users->{$user_id}{key1} } }, $user_id;
}
于 2013-01-11T01:59:53.413 に答える