gpt4 book ai didi

perl - 由于相似的键而导致哈希值覆盖?

转载 作者:行者123 更新时间:2023-12-04 14:00:37 25 4
gpt4 key购买 nike

我想将数据从德语数据结构映射到英语数据结构。

为此,我使用一个散列,它将德语单词作为键,将英语单词作为值 ($mapping_table)。

数据存储在哈希数组 ($data) 中。关键字是德语单词,必须用英语单词替换。值是保持不变的数据。

为了进行映射,我编写了以下代码:

my $mapping_table = {
'Exemplare' => 'copies',
'Seiten' => 'pages',
'Statushinweis' => 'status',
'Serie von' => 'number_of',
'ISBN/Barcode-Nr.' => 'ISBN_barcode',
'Status' => 'status',
};

my $data = [
{
'Exemplare' => '1',
'Seiten' => '0',
'Statushinweis' => 'Statushinweis',
'ISBN/Barcode-Nr.' => '3-551-01561-9',
'Serie von' => '4',
'Status' => 'Gesucht'
},
{
'Exemplare' => '4',
'Seiten' => '111',
'Statushinweis' => '',
'ISBN/Barcode-Nr.' => '3-551-01561-9',
'Serie von' => '4',
'Status' => 'Vorhanden'
}
];

my $mapped_data = [];

foreach my $issue ( @$data ) {
my %tmp_hash;
foreach my $key (sort keys %$mapping_table) {
$tmp_hash{$mapping_table->{$key}} = $issue->{$key};
}
push @$mapped_data, \%tmp_hash;
}

print Dumper $mapped_data;

转储的结果让我很惊讶。
$VAR1 = [
{
'number_of' => '4',
'copies' => '1',
'status' => 'Statushinweis',
'ISBN_barcode' => '3-551-01561-9',
'pages' => '0'
},
{
'pages' => '111',
'ISBN_barcode' => '3-551-01561-9',
'status' => '',
'copies' => '4',
'number_of' => '4'
}
];

可以看出,键 'status' 的值保持键 'Statushinweis' 的值,而这些键完全丢失了。

我试图在 Google 和调试器的帮助下弄清楚为什么会发生这种情况,但失败了(也许显而易见?)。

也许我应该提到我在 Win7 上使用草莓 perl 5.26.1。

知道我做错了什么以及如何解决吗?

提前谢谢。

最佳答案

您的映射表需要支持双向映射。目前,您无法从“值”(即值)映射到“状态”或“Statushinweis”,因为两个键具有相同的值。如果您可以自由选择您的 key ,请重命名其中之一,例如:

my $mapping_table = {
'Exemplare' => 'copies',
'Seiten' => 'pages',
'Statushinweis' => 'statushint', // <- change here
'Serie von' => 'number_of',
'ISBN/Barcode-Nr.' => 'ISBN_barcode',
'Status' => 'status',
};

my $data = [
{
'Exemplare' => '1',
'Seiten' => '0',
'Statushinweis' => 'Statushinweis',
'ISBN/Barcode-Nr.' => '3-551-01561-9',
'Serie von' => '4',
'Status' => 'Gesucht'
},
{
'Exemplare' => '4',
'Seiten' => '111',
'Statushinweis' => '',
'ISBN/Barcode-Nr.' => '3-551-01561-9',
'Serie von' => '4',
'Status' => 'Vorhanden'
}
];

关于perl - 由于相似的键而导致哈希值覆盖?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48529062/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com