对不起,
如何获取所有值并打印出来,在代码中每个键跟随多个值
%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
你有三个问题。
- 您使用的是哈希引用,而不是数组引用
- 您没有为
@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}};
}
%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 "@keysn";
print "@{$_}n" for @val;
Bhargav Gor,bhai,这是存储键的多个值的常用方法。
但
-
请记住,这是一个匿名哈希,即键值对:{39,34,11,12} = ("39"=>34, "11"=>12)
-
这是一个匿名数组:[39,34,11,12]
已经使用了 1.这意味着您正在使用另一个哈希值作为 %ages 哈希的值,即
%ages =
" Michael Caine" => ("39"=>34,"11"=>12),
" Dirty Den" => ("34"=>56,"76"=>58),
" Angie" => ("27"=>56,"78"=>89)
如果要提取键"迈克尔·凯恩"的键"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,
对不起,
我必须着急,对不起错别字,希望你明白你应该为这样的存储做什么