dgB*_*gBP 1 perl hash loops key-value
我有一个哈希,其中填充了未知数量的字符串键.每个键的值为零以启动.
我想迭代这个哈希并为除第一个之外的每个元素,使其值等于我在另一个哈希中的等价物加上此哈希中的先前值.所以在数学上类似于:
hash1:a = hash2:a;
hash1:b = hash2:b + hash1:a;
hash1:c = hash2:c + hash1:b;
hash1:d = hash2:d + hash1:c;
hash1:e = hash2:e + hash1:d;
...
Run Code Online (Sandbox Code Playgroud)
我甚至不确定我知道如何做第一个,因为我不知道价值或关键是什么.我打算先对它进行排序,但由于键可能是列表中的任何键,我无法指定首先是什么.我不知道如何根据键引用以前的值.这可能吗?
(我没有任何代码表明我害怕,我试过但我只是意识到这是非常错的哈哈)
哈希本身是无序的,因此他们不知道"先前"的密钥.您需要使用该keys函数提取密钥,对它们进行排序(如您所述),然后参考密钥列表的上一个元素,以找出您所选订单中的上一个密钥是什么.
获得之前的密钥后,您可以使用通常的$hash{$key}语法从哈希中访问该值.
然后诀窍就是访问列表中的前一个键,这可能需要通过索引迭代列表,因为foreach循环不会让您知道目前列表中的位置.就像是
for (my $i = 0; $i <= $#keys; ++$i) {
if ($i == 0) { ... } # first key
else { ... } # all other keys
}
Run Code Online (Sandbox Code Playgroud)
可能是合适的.