加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

Perl哈希:为键分配值并查看键是否已定义

发布时间:2020-12-16 06:15:55 所属栏目:大数据 来源:网络整理
导读:是否有一种有效的方法可以查看,如果哈希键分配导致添加新项目或修改现有项目?与 Bloom’s filter implementation中的add函数类似的行为. 在下面的构造中,执行两次查找:一次显式地使用exists,另一次在赋值期间隐式执行.因此,第一次查找在逻辑上是冗余的. my
是否有一种有效的方法可以查看,如果哈希键分配导致添加新项目或修改现有项目?与 Bloom’s filter implementation中的add函数类似的行为.

在下面的构造中,执行两次查找:一次显式地使用exists,另一次在赋值期间隐式执行.因此,第一次查找在逻辑上是冗余的.

my %hash;
my $key;
...
my $existed = exists $hash{$key};
$hash{$key} = 1;

解决方法

通过“项目”,我认为你的意思是“关键”.

如果该值无意义,您可以使用以下内容:

my $dup = $hash{$key}++;

如果值有意义,您可以使用以下内容:

my $dup = exists($hash{$key});
$hash{$key} = $val;

如果值有意义但始终定义,则可以使用以下内容:

my $ref = $hash{$key};
my $dup = defined($$ref);
$$ref = $val;

顺便说一句,第一个代码片段可以很容易地扩展,以从列表中过滤出重复的内容.

my %seen;
my @unique = grep !$seen{$_}++,@list;

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读