繁体   English   中英

在Perl中将哈希中的所有值相乘?

Multiply all values in hash together in Perl?

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我想将哈希的所有值相乘在一起,而不必调用特定的元素。 例如,我不想$hash{'kv1'} * $hash{'kv2'} * $hash{'kv3'}因为我不知道在哈希做这个元素的数量。

我猜想有一个简单有效的函数可以执行此操作,也许使用each函数或某些函数,但是我找不到要遵循的示例。 有任何想法吗?

4 个回复

从1开始(因为1乘以1就是乘以1),然后循环遍历哈希值并将当前总值乘以哈希值。

#!/usr/bin/env perl

use v5.12;
my %hash = ( a => 1, b => 2, c => 3, d => 4 );
my $value = 1;
$value = $value * $_ foreach values %hash;
say $value;

这就是List :: Utilreduce的目的是:

use List::Util 'reduce';

my %hash = (foo => 3, bar => 7, baz => 2);

say reduce { our $a * our $b } values %hash;

输出:

42

我会像这样遍历keys %hash

my $prod = 1;
$prod *= $hash{$_} for keys %hash;

这不会吗?

my $m = 1;
for (values %my_hash) {
    $m *= $_;
}
2 将列中的所有值相乘

我正在使用熊猫 1.14 和 python 3.8 给定一个数据框: 如果我想对 A 列中的所有值求和,我只想sum(df["A"])如何替换 sum -> multiplication? 我想要的是multiply(df["A"]) ,它会返回 3 x 3 x 1 x 4 = 36。 ...

3 在Perl中将哈希值用作类别

我正在将两个制表符分隔的文件读入两个哈希,文件看起来像这样: 和 我只想捡蔬菜并得到他们的数量。 有没有比for循环更智能的方法呢? 而且,如果我想创建两个新的哈希值%fruits和%vegetable,我是否真的必须这样做: ...

2014-08-05 20:59:55 3 55   perl/ hash
4 如何在Perl中将数组用作哈希值?

好的,这就是我要创建的整个结构。 我需要创建一个可用作哈希值的匿名数组。 这在我的程序中有效: 我试图用这样的代码创建完全相同的东西。 这有效: 但这不起作用: ...

5 更新Perl中哈希值哈希值

我在Perl 非常初学者。 我有一个哈希$self ,其中包含其他哈希,特别是它包含具有key params的哈希。 我想将与params的关键color相对应的值从black为white 。 换句话说, $self是如何的: 我想要的是: 我试过的 但是我Odd ...

2018-05-18 10:13:16 1 100   perl/ hash
6 从哈希数组的Perl哈希中删除值

我试图从我使用以下代码创建的哈希数组的哈希值中删除值: 我一直试图删除%StoredParentshash中Tally为零的值。 (我还有更新Tally代码,但有些代码没有更新,我希望它们从哈希中删除)。 我写了以下内容: 这段代码删除了数据,但是当我使用Data::Du ...

7 迭代perl中的哈希值

我有一个哈希,让我们说20个值。 它以这种方式初始化: 现在,当我尝试获取$ line中每个哈希的值时,它表示:在file.pl第89行打印时使用未初始化的值 有没有办法迭代哈希的每个值? 我也尝试过: 但这也行不通:参考文献找到了第89行的file.pl所需的 ...

2010-11-10 14:43:22 4 24444   perl/ hash
8 Perl中的双哈希值

使用哈希时,Perl有非常方便的values关键字来处理哈希值。 假设我有一个双哈希,即像这样创建的东西: 然后values %dh返回哈希数组。 要访问值,我需要这样的东西: 有没有更好的方式来做到这一点,避免for循环? 像values %{ values %dh ...

2016-05-23 09:32:40 1 323   perl/ hash
暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2021 STACKOOM.COM