2014-01-31 56 views
0

我想要合并hash1和hash2的相同值并创建第三个散列,其中hash3的键是hash1的键,而hash3的值是hash2的键这些相同的值比较一个散列的值与另一个值的值在perl中创建第三个散列

%hash3 = (
    0 =>3, 
    1 => 2, 
    2 => 1, 
    3 => 0 
); 
+0

为什么'%hash3'3中的'0'键? – fugu

+0

你想要做什么?我不清楚 – fugu

+2

你应该首先用简单的语言来制定你的任务。然后将其转换为代码。现在我不知道你是如何从数据中获得结果的。 –

回答

1

reverse%hash2,然后使用map配对从%hash1键与曾经被认为是的%hash2的键:

my %reversed = reverse %hash2; 
my %hash3 = map { $_ => $reversed{$hash1{$_}} } keys %hash1; 

%hash3含有s:

{ 
    '1' => '2', 
    '0' => '3', 
    '3' => '0', 
    '2' => '1' 
}; 
+0

感谢您花时间!很好:) – marie

+3

@marie应该注意的是,如果原始%hash2中的值被重复并且您颠倒了您的散列,那么您将散列数据,因为散列中的键必须是唯一的。希望你意识到这一点。 –

相关问题