gpt4 book ai didi

Perl - 从引用的@array 中删除重复项

转载 作者:行者123 更新时间:2023-12-02 14:57:24 26 4
gpt4 key购买 nike

如果我有一个具有以下结构(日期、时间、用户)的 perl 数组,按用户排序:

open my $fh, '<', $file;
while( <$fh> ) {
my @lines = split /\n/;
my ($user, $y, $m, $d, $time) = $lines[0] =~ /\A(\w);(\d+)\/(\d+)\/(\d+);(\d+:\d+:\d+.\d+)/; # Encapsulate values
push @evts, { user => $user, date => "$y/$m/$d", time => $time}; # Array loader
} # This was missing.
close($fh);
my @by_usr = sort { $a->{user} cmp $b->{user} } @evts;

如果它具有完全相同的时间,我如何从中删除重复的条目?

$VAR1 = {
'time' => '08:08:36.120',
'date' => '2018/08/06',
'user' => 'USER1'
};
$VAR2 = {
'time' => '08:08:36.120',
'date' => '2018/08/06',
'user' => 'USER1'
};
...(and more)

我试过 unique 函数,但它不起作用:

sub uniq {
my %seen;
grep !$seen{$_}++, @_;
}
my @unique_events = uniq (@by_usr);

我可以提供任何说明。

最佳答案

您只是检查散列引用(当字符串化时)是否唯一。要检查唯一时间,就这样做吧。

grep !$seen{$_->{'time'}}++, @_;

simbabque 的答案检查是否有任何值不同,而不仅仅是时间(假设所有哈希具有相同的键并且没有值包含 ___)。

关于Perl - 从引用的@array 中删除重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52334691/

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