Re: deleting duplicates in array using references
- From: Paul Lalli <mritty@xxxxxxxxx>
- Date: Mon, 30 Jul 2007 11:46:14 -0700
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
.
- Follow-Ups:
- References:
- deleting duplicates in array using references
- From: billb
- deleting duplicates in array using references
- Prev by Date: Re: form script question
- Next by Date: Re: deleting duplicates in array using references
- Previous by thread: deleting duplicates in array using references
- Next by thread: Re: deleting duplicates in array using references
- Index(es):
Relevant Pages
|