perl - 按 Perl 哈希的哈希值哈希排序

标签 perl sorting hash perl-data-structures

我有一个类似于下面的哈希结构:

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 循环,按值对展平的哈希进行排序。

有没有更有效的方法来做到这一点?

最佳答案

与其创建新的散列,不如考虑创建一个排序数组。遍历初始值,插入数组,根据值,键值对,然后遍历结果数组。这应该为您提供初始迭代的 O(n) + 每次插入的 O(lg n) + 最后迭代的 O(n)。

关于perl - 按 Perl 哈希的哈希值哈希排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/762399/

相关文章:

c++ - 如何找出所有闭源应用程序正在写入的位置?

Perl 鲤鱼 :confess unit test

Perl SOAP::Lite 和请求对象的服务描述

macos - 使用 'git send-mail' ,但出现错误

javascript - 排序 "day" "week" "month"和 "year"

JavaScript 根据条件对数组进行排序

ruby - 为什么我不能使用新的 Ruby 1.9.2 哈希语法将整数用作键?

php - 哈希 url(片段)可以被搜索引擎抓取吗?

python - 如何从python中具有两列的文件中排序数据

hash - 要求输入单个字母的密码系统 - 它们存储什么?