如何在perl中找到重复的数组值

时间:2011-10-30 16:08:17

标签: perl

  

可能重复:
  What's the most efficient way to check for duplicates in an array of data using Perl?

如何在数组中找到重复值?

这是我的阵列:

@arr - ("one","two","one","three","two");

输出将是:

one
two

代码:

while (<RFH>) {
    chomp;
    @arr = split(/\|/,$_);
    push(@arr1,$arr[4]."\n");
}

3 个答案:

答案 0 :(得分:8)

一次性解决方案:

my %seen = ();
@dup = map { 1==$seen{$_}++ ? $_ : () } @list;

答案 1 :(得分:1)

 my %cnt;
 $cnt{$_}++ for @arr;
 print "$_\n" for grep $cnt{$_} > 1, keys %cnt;

答案 2 :(得分:1)

使用哈希的替代方式:

my @arr = ("one", "two", "one", "three", "two");
my %arr_counts;
for (@arr) { $arr_counts{$_}++ };
my @dupes = grep { $arr_counts{$_} > 1 } keys %arr_counts;

请注意,哈希不维护排序顺序。它不是随机的,所以如果你使用相同的列表运行,你将获得相同的结果,但订单将在实践中改变。