【发布时间】:2018-08-26 20:38:06
【问题描述】:
我有这个包含一些信息的哈希:
my %hash = (
key_1 => {
year => 2000,
month => 02,
},
key_2 => {
year => 2000,
month => 02,
},
key_3 => {
year => 2000,
month => 03,
},
key_4 => {
year => 2000,
month => 05,
},
key_5 => {
year => 2000,
month => 01,
}
);
我不想创建一个散列数组,其中每个数组元素列出具有相同年份和月份的每个散列键/值对。
所以基本上我想创建这样的东西:
$VAR1 = [
'key_1' => {
'month' => 2,
'year' => 2000
},
'key_2' => {
'month' => 2,
'year' => 2000
}
], [
'key_3' => {
'month' => 3,
'year' => 2000
}
], [
'key_4' => {
'month' => 3,
'year' => 2000
}
], [
'key_5' => {
'year' => 2000,
'month' => 1
}
];
这里真正的问题是:如何将哈希键键值与其他键键值进行比较并从中制作映射。
感谢您的宝贵时间! =)
【问题讨论】:
-
那么为什么在您的示例中 key_3 和 key_4 没有放在同一个数组中,因为它们的年份和月份相同?
-
你说要创建的不是哈希数组,它是 hash 的哈希。您所谓的外部“列表”的成员是键值对,因此外部结构是一个有,而不是一个列表。
-
你说你想要
$VAR1 = [$k,$v,$k,$v...], [...], [...], ...;,这没有意义。接受的答案假设你的意思是你想要$VAR1 = [ [$k,$v,$k,$v,...], [...], [...], ... ];,但$VAR1 = [ { $k=>$v,$k=>$v,...}, {...}, {...}, ... ];不是更有意义吗? -
@KjetilS。我修好了,我的错。
标签: arrays perl dictionary hash hashref