[英]fetching all values from Hashes with Multiple Values Per Key in perl
如何获取所有值并打印,在代码中每个键遵循多个值
%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
分配任何@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 "@keys\n";
print "@{$_}\n" for @val;
Bhargav Gor,这是存储键的多个值的常用方法。
但,
请记住, 这是一个匿名哈希,即键值对: {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)
如果要提取键“ 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,
对不起,我不得不着急,对错别字表示抱歉,希望您了解对这种存储的处理方法
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.