我正在使用 Tree::Trie
模块构建关键字树。我想按照原始数组中存在的顺序打印数组的元素。
use strict;
use warnings;
use Tree::Trie;
my @ar = ('foo', 'great','food', 'banana','apple', 'fish');
my ($trie) = new Tree::Trie;
$trie->add(@ar);
my @ms = $trie->lookup('f');
print join(",", @ms);
输出是
fish,foo,food
期望的输出
foo,food,fish
有人可以帮助我吗?
最佳答案
另一种选择是使用 Tree::Trie
的 add_data
,它会将您的话与订单数据结合起来,如下所示:
'foo' => 0,'great' => 1,'food' => 2,'banana' => 3,'apple' => 4,'fish' => 5
并在 lookup_data
之后返回单词及其相关数据。然后可以使用该数据来保留原始词序:
use strict;
use warnings;
use Tree::Trie;
my @ar = qw( foo great food banana apple fish );
my $trie = Tree::Trie->new();
$trie->add_data( map { $ar[$_] => $_ } 0..$#ar );
my %ms = $trie->lookup_data('f');
my @ms = sort { $ms{$a} <=> $ms{$b} } keys(%ms);
print(join(',', @ms), "\n");
输出:
foo,food,fish
关于arrays - 保留在 Perl 中使用 Tree::Trie 找到的关键字的顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13735487/