如何获取所有值并打印它,在代码中每个键有多个值
%ages = (
" Michael Caine" => {39,34,11,12},
" Dirty Den" => {34,56,76,58},
" Angie" => {27,56,78,89}
);
@keys = keys %ages;
@val = values %ages;
print @keys;
print @val; #it will not work in case of multiple values per key
答案 0 :(得分:3)
你有三个问题。
@val
分配任何内容(至少,您在编辑问题之前没有这样做)这样:
use v5.10;
my %ages = (
" Michael Caine" => [39,34,11,12],
" Dirty Den" => [34,56,76,58],
" Angie" => [27,56,78,89]
);
foreach my $key (keys %ages) {
say $key;
say @{$ages{$key}};
}
答案 1 :(得分:1)
%ages = (
" Michael Caine" => [39,34,11,12],
" Dirty Den" => [34,56,76,58],
" Angie" => [27,56,78,89],
);
@keys = keys %ages;
@val = values %ages;
print "@keys\n";
print "@{$_}\n" for @val;
答案 2 :(得分:1)
Bhargav Gor,bhai,这是为密钥存储多个值的常用方法。
但是,
请记住这是一个匿名哈希即键值对: {39,34,11,12} =(“39”=> 34,“11” => 12)
和这是一个匿名数组: [39,34,11,12]
您使用过1.这意味着您使用另一个哈希值作为%age hash的值,即
%ages =
" Michael Caine" => ("39"=>34,"11"=>12),
" Dirty Den" => ("34"=>56,"76"=>58),
" Angie" => ("27"=>56,"78"=>89)
如果要提取关键字“Michael Caine”的键“39”的值
print %{$ages{" Michael Caine"}}->{"39"} #prints 34
如果您真的想要这样的结构,那么这就是您可以显示所有值的方法
foreach(keys %ages) {
$name = $_;
foreach(keys %{$ages{$name}}) {
print %{$ages{$name}}->{$_},",";
}
print "\n";
}
#output:
#>34,12,
#>56,58,
#>56,89,
我不认为你想要这种结构,你可能想要使用一个数组, (匿名数组)。
%ages = (
" Michael Caine" => [39,34,11,12],
" Dirty Den" => [34,56,76,58],
" Angie" => [27,56,78,89]
);
现在您可以轻松地显示如下输出:
foreach(keys %ages) {
$name = $_;
foreach( @{$ages{$name}} ) {
print $_,",";
}
print "\n";
}
#output:
#>39,34,11,12,
#>34,56,76,58,
#>27,56,78,89,
对不起,我不得不匆忙,抱歉打字错误,希望你明白你应该为这样的存储做什么