【发布时间】:2018-03-03 08:10:06
【问题描述】:
我的数据结构是
my %hash = (
firstkey => {
secondkey => {
2 => ['9','2'],
1 => ['3','4'],
3 => ['8','2']
}
}
);
print Dumper \%hash;
我想按第三个键对哈希进行排序。即1、2 和 3 在这种情况下
然后比较数组中的第二个元素(index[1])。如果相同,则打印出来。
预期的排序哈希:
my %hash = (
firstkey => {
secondkey => {
1 => ['3','4'],
2 => ['9','2'],
3 => ['8','2']
}
}
);
print Dumper \%hash;
对哈希排序后,我们将第一个数组[3,4] 的index[1] 与第二个数组[9,2] 进行比较。
4 不等于 2,所以我们不会打印任何东西。
然后,我们将第二个数组[9,2] 的index[1] 与第三个数组[4,2] 进行比较。
2等于2,那么我们就打印它的所有内容
firstkey, secondkey, 3, [8,2]
我们只需要比较相邻的数组。
我阅读了很多关于排序哈希的解决方案,但我找不到真正重新排序它的解决方案有没有办法通过键重新排序哈希并在 Perl 中使用新顺序构造哈希? 还是只能通过for循环对hash进行排序,在for循环中进行比较?
【问题讨论】:
-
@zdim 感谢您的建议。我正在尝试。
-
虽然上述评论总体上很好并且需要,并且值得关注,但它可能无助于解决这个问题(因此可能会产生误导)——我发布了一个答案。