arrays - 保留在 Perl 中使用 Tree::Trie 找到的关键字的顺序

标签 arrays perl tree

我正在使用 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::Trieadd_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/

相关文章:

java - 10*10 游戏的逻辑检查

java - Android/Java 中的 JSON 数组迭代

c++ - 让 if 语句在 for 循环中工作(使用动态数组和指针)

xml - Xpath 不适用于 XML::Twig::XPath::Elt

c - C语言中使用fork()创建进程树

c++ - 为什么会有单独的 "trie_node"和 "trie"结构?

java - 使用数组来存储用户的输入

arrays - 为什么 Perl 中的连接打印数组的 COUNT 而不是数组本身

Perl 密码学 : Encrypting/Decrypting ASCII chracters with pack and unpack functions

algorithm - 使用通配符管理配置树的好算法?