免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2726 | 回复: 4
打印 上一主题 下一主题

求合并一个数组的方法 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-10-03 13:13 |只看该作者 |倒序浏览
@a=(
['a','2','4'],
['b','3','2'],
['c','4','4'],
['d','t','3'],
['a','4','5'],
['c','3','5']
);

判断第一个字段 如果出现相同的 就吧后面的两个字段加一起
想要的结果是这样的
a,24, 45
b ,3, 2
c ,43, 45
d ,t, 3

[ 本帖最后由 luesfeng 于 2009-10-3 13:54 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2009-10-03 14:34 |只看该作者

  1. my %h = ();
  2. for(@a){
  3.     push @{$h{$_->[0]}},$_->[1].$_->[2];
  4. }

  5. for(sort keys %h){
  6.     print "$_ @{$h{$_}}\n";
  7. }
复制代码


  1. C:\file>perl 5.pl
  2. a 24 45
  3. b 32
  4. c 44 35
  5. d t3
复制代码

[ 本帖最后由 hitsubunnu 于 2009-10-3 14:41 编辑 ]

论坛徽章:
0
3 [报告]
发表于 2009-10-03 15:14 |只看该作者
原帖由 hitsubunnu 于 2009-10-3 14:34 发表

my %h = ();
for(@a){
    push @{$h{$_->[0]}},$_->[1].$_->[2];
}

for(sort keys %h){
    print "$_ @{$h{$_}}\n";
}



C:\file>perl 5.pl
a 24 45
b 32
c 44 35
d t3

谢谢 你了

论坛徽章:
0
4 [报告]
发表于 2009-10-13 21:45 |只看该作者

回复 #1 luesfeng 的帖子

呃,写了一个很繁琐的程序,程序内容如下:
=============================================================
#!/usr/local/bin/perl
use warnings;
use strict;

my @a=(
['a','2','4'],
['b','3','2'],
['c','4','4'],
['d','t','3'],
['a','4','5'],
['c','3','5']
);

my $n = scalar(@a) - 1;

for($i=0;$i<=n;$i++)
{
  for(my $j=($i+1);$j<=$n;$j++)
  {
    if($a[$i] -> [0] eq $a[$j] -> [0])
    {
      $a[$i] -> [1] = $a[$i] -> [1] . $a[$j] -> [1];
      $a[$i] -> [2] = $a[$i] -> [2] . $a[$j] -> [2];   
      splice(@a,$j,1);
      $n = $n - 1;  
    }
  }
}

$n = scalar(@a) - 1;

for($i=0;$i<=n;$i++)
{
  print $a[$i] -> [0] . ", ";
  print $a[$i] -> [1] . ", ";  
  print $a[$i] -> [0] . "\n";
}
=============================================================
程序输出:
a, 24, 45
b, 3, 2
c, 43, 45
d, t, 3

再试试,改简单点,呼。

论坛徽章:
0
5 [报告]
发表于 2009-10-14 09:42 |只看该作者
原帖由 luesfeng 于 2009-10-3 13:13 发表
@a=(
['a','2','4'],
['b','3','2'],
['c','4','4'],
['d','t','3'],
['a','4','5'],
['c','3','5']
);
判断第一个字段 如果出现相同的 就吧后面的两个字段加一起
想要的结果是这样的
a,24, 45
b  ...



练练手,呵呵。
@a=(
['a','2','4'],
['b','3','2'],
['c','4','4'],
['d','t','3'],
['a','4','5'],
['c','3','5']
);

my %h = ();
for(@a){
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$h{$_->[0]} = [$h{$_->[0]}->[0].$_->[1],$h{$_->[0]}->[1].$_->[2]];
}

for(sort keys %h){
&nbsp;&nbsp;&nbsp;&nbsp;print "$_ $h{$_}->[0] $h{$_}->[1] \n";
}
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP