Re: deleting duplicates in array using references



On Jul 30, 2:37 pm, billb <billbea...@xxxxxxx> wrote:
i have a multidimensional array, but i want to delete duplicate
entries based on the first element of each 'row'.

$ perldoc -q duplicate
Found in /opt2/Perl5_8_4/lib/perl5/5.8.4/pod/perlfaq4.pod
How can I remove duplicate elements from a list or array?

my array is:

my @array = ( [UK9004411, A140, B, 0.040] , [UK0030239, H7140, H,
0.030] , [UK0030239, S1393, M1, 0.030] , [UK0012821, H4030, H,
0.010] , [UK0012821, H4060, H, 0.010] );

and I want to end up with
( [UK9004411, A140, B, 0.040] , [UK0030239, H7140, H, 0.030] ,
[UK0012821, H4030, H, 0.010] )

(no real preference in which row is dropped...just on a first come
first served basis.)

i.e. take out the duplicate codes based on the first element of each
row $array[$row] -> [0]

$ perl -MData::Dumper -e'
my @array = (
[UK9004411, A140, B, 0.040] ,
[UK0030239, H7140, H, 0.030] ,
[UK0030239, S1393, M1, 0.030] ,
[UK0012821, H4030, H, 0.010] ,
[UK0012821, H4060, H, 0.010] ,
);
my %seen;
my @nodups = grep { !$seen{$_->[0]}++ } @array;
print Dumper(\@nodups);
'
$VAR1 = [
[
'UK9004411',
'A140',
'B',
'0.04'
],
[
'UK0030239',
'H7140',
'H',
'0.03'
],
[
'UK0012821',
'H4030',
'H',
'0.01'
]
];

i looked into splice() function based on the index but not sure this
is the best way or the syntax for this?

splice (@array , $row, 1); ?

splice() is fine for removing the elements once you know which ones
you want to remove, but it's useless for actually finding which
elements to remove.

Paul Lalli

.



Relevant Pages

  • deleting duplicates in array using references
    ... i have a multidimensional array, but i want to delete duplicate ... entries based on the first element of each 'row'. ... i.e. take out the duplicate codes based on the first element of each ...
    (comp.lang.perl.misc)
  • Re: Help with 4 dimensional implementation
    ... I am trying to count number of times the transitions occurs (for ... Read the first four lines into an array; ... Discard the first element of the array (perldoc -f shift) ...
    (comp.lang.perl.misc)
  • Re: Repost (Comparing two ranges)
    ... I was on the right track assuming a countif type function instead of ... The result does not take into account the duplicate ... Is there a way to compare two ranges where you can create an array ... Remember I want to put it into a SUMPRODUCT function. ...
    (microsoft.public.excel.worksheet.functions)
  • RE: Speed up Array Transfer to Dictionary
    ... of comparisons every time you have a known duplicate. ... array with themselves. ... array in the first place as a dictionary cannot have duplicate keys. ... dupe = dupe + 1 ...
    (microsoft.public.excel.programming)
  • Re: How to return cell reference
    ... Well.....these array formulas seem to work fine with duplicate ... First instance of "John" in A1:M10 ... With Dupe Cells: C3 and A6 ...
    (microsoft.public.excel)