【发布时间】:2010-10-20 05:30:43
【问题描述】:
我有一个类似于以下的哈希结构:
KeyA => {
Key1 => {
Key4 => 4
Key5 => 9
Key6 => 10
}
Key2 => {
Key7 => 5
Key8 => 9
}
}
KeyB => {
Key3 => {
Key9 => 6
Key10 => 3
}
}
我需要打印出通过散列结构的遍历路径和遍历结束时的值,以便按值排序。 例如,对于上面的哈希结构我需要打印:
KeyB Key3 Key10 3
KeyA Key1 Key4 4
KeyA Key2 Key7 5
KeyB Key3 Key9 6
KeyA Key2 Key8 9
KeyA Key1 Key5 9
KeyA Key1 Key6 10
目前,为了解决这个问题,我正在使用嵌套的 foreach 循环遍历哈希结构,并通过插入一个键等于遍历路径(例如“KeyA Key3 Key10”)且值等于遍历路径的末尾(例如 3),然后执行另一个 foreach 循环,按值对展平的哈希进行排序。
有没有更有效的方法来做到这一点?
【问题讨论】:
-
如果叶子值不一定是唯一的,你应该
push @{ $flat{$path} } => $value。
标签: perl sorting hash perl-data-structures