计算数组哈希中的重复值

矩阵154

我正在生成一个哈希并将该哈希推入数组中。末尾的数组显示为

$VAR1 = [
          {
            'Count' => 1,
            'maint_wf' => 'WFblabla',
            'lines' => {
                         'line1' => {
                                      'ort' => 'city_x',
                                      'lbz' => 'L1city_x'
                                    }
                       },
            'receive_date' => 'Di, 3 Sep 2013 12:16:43 +0200',
            'maint_date' => '02.09.2013',
            'calendar' => {
                            'dtend' => '20130902T0530',
                            'dtstart' => '20130902T0100'
                          }
          },
          {
            'Count' => 3,
            'maint_wf' => 'WFbla',
            'lines' => {
                         'line3' => {
                                      'ort' => 'city1',
                                      'lbz' => 'L1_city1'
                                    },
                         'line1' => {
                                      'ort' => 'city2',
                                      'lbz' => 'L1_city2'
                                    },
                         'line2' => {
                                      'ort' => 'city2',
                                      'lbz' => 'L2_city2'
                                    }
                       },
            'receive_date' => 'Mi, 4 Sep 2013 08:56:35 +0200',
            'maint_date' => '03.09.2013',
            'calendar' => {
                            'dtend' => '20130903T0530',
                            'dtstart' => '20130903T0300'
                          }
          },
          ...
        ];

我如何计算键“ ort”的重复值(即存在多少“ ort” =>“ city2”?)然后仅显示键“ lbz”的对应值?

疾病

创建一个为每个ort值计算可能的lbz值的哈希可以帮助您:

#!/usr/bin/perl
use warnings;
use strict;

use Data::Dumper;

my $arrR = [
            {
                'Count' => 1,
       # ...  
           ];

my %ort;
for my $hashR (@$arrR) {
    my @lines = values %{ $hashR->{lines} };
    for my $line (@lines) {
        $ort{ $line->{ort} }{ $line->{lbz} }++;
    }
}
print Dumper \%ort;

输出:

$VAR1 = {
          'city2' => {
                       'L1_city2' => 1,
                       'L2_city2' => 1
                     },
          'city_x' => {
                        'L1city_x' => 1
                      },
          'city1' => {
                       'L1_city1' => 1
                     }
        };

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章