首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >显示来自Perl数组的异构数据

显示来自Perl数组的异构数据
EN

Stack Overflow用户
提问于 2015-07-02 09:52:10
回答 1查看 36关注 0票数 0

伪码

代码语言:javascript
复制
i=0;
array $id;
array $name; 
array $size;
$array[$i] = ($id, $name, $size); 

我想得到输出的地方

代码语言:javascript
复制
-----------------------------
ID | Name | Size
-----------------------------
$id(0) | $name(0) | $size(0)
$id(1) | $name(1) | $size(1)
$id(2) | $name(2) | $size(2)
...    | ...      | ...
-----------------------------

打印数据结构的伪码

代码语言:javascript
复制
for $row in $array:
    for $col in $row: 
        print $col, "|"; 
    end; 
    print "\n;
end    

在这里,我不确定是否引用变量从内部for-循环到外部for-循环。有有限的变量,但我可能需要做统计分析的基础上,在后面的R,数据库连接,例如postreSQL和R之间仍然是在测试阶段的这里。所以我想把数据保留为原始数据。

如何为这类数据及其所需的进程选择更好的数据结构?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-07-02 10:03:39

perl中有两种类似的数据结构。

您有一个list,它是一个有序的标量序列。还有hash,它是一组无序的键值对。

因此,考虑到这一点,如果您的“id”是一个关键字段,那么使用键值对可能是值得的。(然后你可以对其进行琐碎的排序-实际上,你必须生产有序的输出)

但是在你的例子中--你真的不需要从“内部”访问“外部”循环:

代码语言:javascript
复制
my @LOL = ( 
                [ 'id', 'name', 'size' ],
                [ 'id2', 'name2', 'size2' ], 
          );

foreach my $row ( @LOL ) {
   print join ( "|", @$row ), "\n"; 
}

这是一个简单的例子,它是如何工作的。

但是,您的数据可能是键值-因此您可以这样做:

代码语言:javascript
复制
my %hash = (
    'id1' => {
        'name' => 'myname',
        'size' => 'mysize',
    },
    'id2' => {
        'name' => 'my2name',
        'size' => 'my2size',
    },
);

my @columns = qw ( name size );

foreach my $id ( sort keys %hash ) {
    print join( "|", $id, @{ $hash{$id} }{@columns} ), "\n";
}

除非你需要保持这种关系,否则这可能是不必要的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31181324

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档