gpt4 book ai didi

perl - 如何在不重复二级 key 的情况下打印出复杂的哈希值?

转载 作者:行者123 更新时间:2023-12-01 06:25:37 25 4
gpt4 key购买 nike

您好,我有一个包含类(class)名称、注册学生人数和学生姓名的哈希。
如何在不重复二级 key 的情况下打印出此哈希值。
示例:我在哈希中填写的数据是科学类,3 名学生注册了乔治、丽莎、马蒂亚斯和数学类,4 名学生注册了彼得、乔治、安娜、马丁。

my %register=();

$register{$className}->{$count_students}=$student_name; # Fill the hash.

foreach my $key ( keys %register ){

print "$key: ";

foreach my $class ( keys %{ $register{$key} } ){

print "$class=$register{$key}->{$class}\n";

}
}

我得到的结果如下:

理科类:2=丽莎
1=乔治
3=马蒂亚斯
数学课:2=安娜
1=马丁
3=彼得
4=乔治

但我希望我的结果是:

科学类:3 -> 丽莎、乔治、马蒂亚斯
Math_class: 4 -> Anna, Martin, Peter, George

如何更正我的脚本?帮帮我。

最佳答案

您可以使用 keys 获取第二级中的条目数在标量上下文中运行,您可以使用 values 获取第二级中的值功能。

#!/usr/bin/perl

use strict;
use warnings;

my %register = (
Science_class => {
1 => "George",
2 => "Lisa",
3 => "Mathias",
},
Math_class => {
1 => "Martin",
2 => "Anna",
3 => "Peter",
4 => "George",
}
);

for my $class (keys %register) {
print "$class: ", scalar keys %{$register{$class}},
" ", join(", ", values %{$register{$class}}), "\n";
}

但是,鉴于您的数据结构,arrayrefs 的散列更有意义:

#!/usr/bin/perl

use strict;
use warnings;

my %register = (
Science_class => [
"George",
"Lisa",
"Mathias",
],
Math_class => [
"Martin",
"Anna",
"Peter",
"George",
]
);

for my $class (keys %register) {
print "$class: ", scalar @{$register{$class}},
" ", join(", ", @{$register{$class}}), "\n";
}

您可能会发现阅读 perldoc perldsc有助于理解如何在 Perl 5 中创建和操作数据结构。

关于perl - 如何在不重复二级 key 的情况下打印出复杂的哈希值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6665050/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com