伪码
i=0;
array $id;
array $name;
array $size;
$array[$i] = ($id, $name, $size); 我想得到输出的地方
-----------------------------
ID | Name | Size
-----------------------------
$id(0) | $name(0) | $size(0)
$id(1) | $name(1) | $size(1)
$id(2) | $name(2) | $size(2)
... | ... | ...
-----------------------------打印数据结构的伪码
for $row in $array:
for $col in $row:
print $col, "|";
end;
print "\n;
end 在这里,我不确定是否引用变量从内部for-循环到外部for-循环。有有限的变量,但我可能需要做统计分析的基础上,在后面的R,数据库连接,例如postreSQL和R之间仍然是在测试阶段的这里。所以我想把数据保留为原始数据。
如何为这类数据及其所需的进程选择更好的数据结构?
发布于 2015-07-02 10:03:39
perl中有两种类似的数据结构。
您有一个list,它是一个有序的标量序列。还有hash,它是一组无序的键值对。
因此,考虑到这一点,如果您的“id”是一个关键字段,那么使用键值对可能是值得的。(然后你可以对其进行琐碎的排序-实际上,你必须生产有序的输出)
但是在你的例子中--你真的不需要从“内部”访问“外部”循环:
my @LOL = (
[ 'id', 'name', 'size' ],
[ 'id2', 'name2', 'size2' ],
);
foreach my $row ( @LOL ) {
print join ( "|", @$row ), "\n";
}这是一个简单的例子,它是如何工作的。
但是,您的数据可能是键值-因此您可以这样做:
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";
}除非你需要保持这种关系,否则这可能是不必要的。
https://stackoverflow.com/questions/31181324
复制相似问题