繁体   English   中英

如何在perl中的hash哈希中执行通用值的键合并

[英]how to perform merging of keys for common values in hash of hash in perl

我正在perl中的哈希散列下面工作,其中我在内部散列中具有一些对于不同键时间戳相同的值。 有什么办法可以合并时间戳键以获得相似的值?

'Test Responder Data String' => { 
                        '2018-01-26' => 'zzz00175002802;newData1',
                        '2018-01-20' => 'xxy00171329968;data1',
                        '2018-01-27' => 'xxy00171329968;data1',
                        '2018-01-28' => 'xxy00171329968;data1'
                        '2018-01-04' => 'www00171510082;ResponderData',
                        '2018-01-17' => 'rrr00175002256;try data',
                        '2018-01-05' => 'aaa00175033226;response try', 
                        '2018-01-08' => 'aaa00175033226;response try'
                       }

预期结果:

'Test Responder Data String' => { 
                        '2018-01-26'                       => 'zzz00175002802;newData1',
                        '2018-01-20,2018-01-27,2018-01-28' => 'xxy00171329968;data1',
                        '2018-01-04'                       => 'www00171510082;ResponderData',
                        '2018-01-17'                       => 'rrr00175002256;try data',
                        '2018-01-05,2018-01-08'            => 'aaa00175033226;response try'                                                                                 
                       }
my %h=(
    '2018-01-26' => 'zzz00175002802;newData1',
    '2018-01-20' => 'xxy00171329968;data1',
    '2018-01-27' => 'xxy00171329968;data1',
    '2018-01-28' => 'xxy00171329968;data1',
    '2018-01-04' => 'www00171510082;ResponderData',
    '2018-01-17' => 'rrr00175002256;try data',
    '2018-01-05' => 'aaa00175033226;response try', 
    '2018-01-08' => 'aaa00175033226;response try'
);
my %t;
push @{ $t{ $h{$_} } }, $_ for keys %h;

my %result = map { join(",", @{$t{$_}}) => $_ } keys %t;

use Data::Dumper; print Dumper \%result;

输出

$VAR1 = {
      '2018-01-17' => 'rrr00175002256;try data',
      '2018-01-05,2018-01-08' => 'aaa00175033226;response try',
      '2018-01-26' => 'zzz00175002802;newData1',
      '2018-01-04' => 'www00171510082;ResponderData',
      '2018-01-27,2018-01-20,2018-01-28' => 'xxy00171329968;data1'
    };

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM