加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

数组 – 保留在Perl中使用Tree :: Trie找到的关键字的顺序

发布时间:2020-12-16 06:06:38 所属栏目:大数据 来源:网络整理
导读:我正在使用 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(
我正在使用 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,fish

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读