关于perl中的复杂哈希
我有一个散列,其中第一个键是name,第二个键是一些类,如关于perl中的复杂哈希,perl,hash,perl-data-structures,Perl,Hash,Perl Data Structures,我有一个散列,其中第一个键是name,第二个键是一些类,如a级,B级,C级,值是d学生总数 %hash{name}->{class}->number 所以我填充了我的散列,所有的事情都完成了,但是现在当我打印时,我得到了数字,但是如果假设一个学生的名字在a级和C级,而不是B级,它应该显示出来 Name:level A = 1 level B = 0 level C = 1 我怎样才能得到这样的结果?请帮帮我。这有点牵强,但我认为您所追求的是为所有($hash{name}->
a级
,B级
,C级
,值是d学生总数
%hash{name}->{class}->number
所以我填充了我的散列,所有的事情都完成了,但是现在当我打印时,我得到了数字,但是如果假设一个学生的名字在a级和C级,而不是B级,它应该显示出来
Name:level A = 1
level B = 0
level C = 1
我怎样才能得到这样的结果?请帮帮我。这有点牵强,但我认为您所追求的是为所有(
$hash{name}->{class}
未定义的(名称、类)对分配一个零值。所以,考虑到
use strict;
use warnings;
my %scores = (
homer => { levA => 1, levC => 2 },
bart => { levA => 3, levB => 4 },
);
my %all_levels = map { map {$_ => 1} keys %$_ } values %scores;
for my $h (values %scores){
for my $lev (keys %all_levels){
$h->{$lev} = 0 unless exists $h->{$lev};
}
}
my @classes; #First, we grab all of the possible classes.
foreach my $name (sort keys %hash)
{
foreach my $class (sort keys %{$hash->{$name}})
{
push @classes, $class unless $class~~@classes;
}
}
@classes=sort @classes #or sort{$a<=>$b}@classes, depending on the datatype...
foreach my $name(sort keys %hash)
{
foreach my $class(@classes)
{
$hash->{$name}->{$class}=0 unless defined $hash->{$name}->{$class};
}
}
my@classes#首先,我们获取所有可能的类。
foreach my$name(排序键%hash)
{
foreach my$类(排序键%{$hash->{$name})
{
推送@classes,$class,除非$class~~@classes;
}
}
@classes=sort@classes#或sort{$a$b}@classes,具体取决于数据类型。。。
foreach my$name(排序键%hash)
{
foreach my$class(@classes)
{
$hash->{$name}->{$class}=0,除非定义了$hash->{$name}->{$class};
}
}
你的问题对我来说不够清楚。请发一些密码。请更清楚地说出你的要求,如果你大声喊叫,请用英语书写(而不是用文字)。一些提示:句子以大写字母开头,以一个句点结束,而不是两个或三个句点。人称代词I总是大写。“nad”的正确拼写是“and”,“everythin”是“everythin”,“numebr”是“number”。在你的帖子上多投入一点精力,这里的人就更有可能在写回复上投入精力。