gpt4 book ai didi

loops - 是否有 Raku 函数/方法允许迭代排序的哈希数组并确定其最大值?

转载 作者:行者123 更新时间:2023-12-05 04:21:26 25 4
gpt4 key购买 nike

我目前正在使用一个散列数组,该数组已按其键和值排序。我已经成功地拆分了散列,这样我就可以分别获取键和值。我创建了一个循环函数,它遍历键和值数组。此外,我有一个最常见的数字变量,它跟踪散列值并理想地在它遍历循环并在最常见的数字变量中找到一个大于当前值的值时进行更新。这是我的代码的样子:

my $MCNum = 0;
my @sorted_pairs = %counts{$word}.sort: *.kv;
loop (my $i = 0; $i < @sorted_pairs; $i++) {
say "i: ", @sorted_pairs[$i].values;
say "i+1 ",@sorted_pairs[$i+1].values;
if @sorted_pairs[$i].values < @sorted_pairs[$i+1].values {
$MCNum = @sorted_pairs[$i+1].values;
$best_word = @sorted_pairs[$i+1].keys;
say "MCNumber is: ", $MCNum;
}

当我运行程序时,它给出了这个输出:

Sorted Hash Array: [90's => 1 at => 1 dance => 1 did => 1 does => 1 doesn't => 1 don't => 1 droid => 1 dubwise => 1 feat => 1 hasn't => 1 if => 1 is => 5 letters => 1 life => 1 like => 1 man => 1 me => 5 monsterman => 1 my => 2 scenes => 1 sensation => 1 so => 3 song => 1 survives => 1 theme => 1 triangle => 1 weather => 1 would => 1 y'all => 1 you => 10 your => 1]
i: (1)
i+1 (1)
i: (1)
i+1 (1)
i: (1)
i+1 (1)
i: (1)
i+1 (1)
i: (1)
i+1 (1)
i: (1)
i+1 (1)
i: (1)
i+1 (1)
i: (1)
i+1 (1)
i: (1)
i+1 (1)
i: (1)
i+1 (1)
i: (1)
i+1 (1)
i: (1)
i+1 (5)
i: (5)
i+1 (1)
i: (1)
i+1 (1)
i: (1)
i+1 (1)
i: (1)
i+1 (1)
i: (1)
i+1 (5)
i: (5)
i+1 (1)
i: (1)
i+1 (2)
i: (2)
i+1 (1)
i: (1)
i+1 (1)
i: (1)
i+1 (3)
i: (3)
i+1 (1)
i: (1)
i+1 (1)
i: (1)
i+1 (1)
i: (1)
i+1 (1)
i: (1)
i+1 (1)
i: (1)
i+1 (1)
i: (1)
i+1 (1)
i: (1)
i+1 (10)
i: (10)
i+1 (1)
i: (1)
i+1 ()

这让我感到困惑,因为我假设该值在遇到 1 时应该被跳过,但是当它遇到 2、5 和/或 10 时,应该更新最常见的数字变量值。相反,我注意到在运行该程序时,它要么从不更新(如代码所示),要么始终更新变量,而不管数字是小还是大。我错过了什么?

最佳答案

我想你想使用 valuekey在循环内而不是 valueskeys .后者返回列表,当你进行数字比较时 @sorted_pairs[$i].values < @sorted_pairs[$i+1].values您最终会比较这些列表的长度。

永远是一个。

你也可以这样做:

my $MCNum = 0;
my @sorted_pairs = %counts{$word}.sort.rotor(2 => -1).map(*.kv);
for my $a, $b ( @sorted_pairs ) {
if $a.value < $b.value {
$MCNum = $b.value;
$best_word = $b.key;
say "MCNumber is: ", $MCNum;
}
}

rotor 将类似列表的内容拆分为子列表,如果您将循环跳跃长度设置为负数,它会跳回一个元素。

(1,2,3,4,5).rotor(2 => -1) ~~ ((1,2),(2,3),(3,4),(4,5))

一般来说,如果我在 Raku 中看到一个老式的 C 风格循环,我认为可以简化一些事情。 ;)

关于loops - 是否有 Raku 函数/方法允许迭代排序的哈希数组并确定其最大值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74201993/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com