【问题标题】:Elegant way to build an inverted map for a certain key nested in hashrefs为嵌套在 hashrefs 中的某个键构建倒置映射的优雅方法
【发布时间】:2013-01-11 10:01:01
【问题描述】:

我有以下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"]
};

我一直在 create 上构建倒置地图,但我越来越懒了。

我可以为此使用任何一种糖吗?

谢谢。

【问题讨论】:

    标签: arrays perl hash


    【解决方案1】:

    一种方式:

    my $h; 
    push (@{$h->{$hashref->{$_}{key1}}}, $_) for keys %$hashref;
    

    【讨论】:

      【解决方案2】:
      my %users_by_uval;
      for my $user_id (%$users) {
          push @{ $users_by_uval{ $users->{$user_id}{key1} } }, $user_id;
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-06-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多