将数组与哈希图进行比较,并从 Perl 中的哈希中删除元素



我有一个文件被读入,然后变成一个数组,然后计数并放入哈希表中。 然后我在另一个文件中读取,该文件将停用词读入数组。我想获取停用词数组并将其与哈希表进行比较,如果停用词中的单词匹配,则它会将其从哈希表中删除。

我很好奇我可以使用perl做些什么来实现这一点。我不会发布我的代码,因为我不会让其他人编写我的代码。我只是想知道我该怎么做。如果有人有一个好的网站,我可以参考,这可能会有所帮助。

试试这个:

my %table = some_sub_to_populate_table();
my @stop_words = some_sub_to_get_stopwords();
for my $stop_word ( @stop_words ) {
    delete $table{ $stop_word };
}
这也

应该有效

open FH,"<".$PATH or die $!;
my $table={};
while(<FH>){
    $table->{$_}=VALUE
}
close FH;
open FH,"<".$PATH2 or die $!;
my @arr=<FH>;
close $FH;
delete $table{$_} foreach(@arr);

问候

我最初会使用简单的循环解决方案,但也对其他方法感兴趣。也许你可以试试这个?

my %new_table = map { $_ => $old_table{$_} } grep { not $_ ~~ @stop_words } keys %old_table;

1:它使用 grep 获取所有不在@stop_words中的哈希键:

grep { not $_ ~~ @stop_words } keys %old_table;

2:使用这些键,它使用 map 创建一个新的哈希:

my %new_table = map { $_ => $old_table{$_} }

如果要将它们转换为数组,则可以使用Array::Utils的array_minus

相关内容

  • 没有找到相关文章

最新更新