我的兄弟有成千上万的物品 ID 和以下列方式出售的物品数量:
    $VAR1 = {
              'sold_times' => 4,
              'item_id' => 1,
            };
    $VAR2 = {
              'sold_times' => 1,
              'item_id' => 2,
            };
    ...
此信息来自读取日志。在 Perl 中,此数据定义为:
    my @items_ids_sold_count_map = 
    map( { sold_times => $item_id_sold_count_map{$_}, item_id => $_,}, @items_ids);
其中: $item_id_sold_count_map 是一个哈希,@items_ids 是这种哈希的键。作为参考,哈希来自读取日志文件,正如我之前提到的:
    open my $infile, "<", $file_location or die("$!: $file_location");
    while (<$infile>) {
        if (/item_id:(\d+)\s*,\s*sold/) {
            $item_id_sold_count_map{$1}++;
        }
    }
    close $infile;
我想在排名中介绍这一点。标准将是“sold_items”,按降序排列。例如,我想到将其以如下数据结构呈现:
    $VAR1 = { 'position' => 1, 'info' => { 'item_id' => 1, 'sold_items' => 4 },
              'position' => 2, 'info' => { 'item_id' => 2, 'sold_items' => 1 }, ... };
如何创建此数据结构?虽然我没有确切地寻找“最佳”方式,但大约有 500,000 项。