免费注册 查看新帖 |

Chinaunix

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

perl hash 排序 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-05-25 14:07 |只看该作者 |倒序浏览
本帖最后由 linux68 于 2012-05-25 14:23 编辑

我有如下的查询结果
| 2012-05-10 |    0.9463 |
| 2012-05-11 |    0.9431 |
| 2012-05-12 |    0.9385 |
| 2012-05-13 |    0.9400 |
| 2012-05-14 |    0.9447 |
| 2012-05-15 |    0.9443 |
| 2012-05-16 |    0.9460 |
| 2012-05-17 |    0.9442 |
| 2012-05-18 |    0.9415 |
| 2012-05-19 |    0.9372 |
| 2012-05-20 |    0.9352 |
| 2012-05-21 |    0.9408 |
| 2012-05-22 |    0.9098 |
| 2012-05-23 |    0.9046 |
| 2012-05-24 |    0.9169 |
my %data;
我把结果装到hash里 $data{$row[0]}=$row[1];
把结果输出到excel 是 我希望按上面的时间大小顺序输出,有什么方法可以实现。
小弟研究一上午没有正确输出,那位朋友给指点一下,谢谢。

论坛徽章:
5
亥猪
日期:2013-10-15 13:41:04CU十二周年纪念徽章
日期:2013-10-24 15:41:34申猴
日期:2013-10-28 10:55:45辰龙
日期:2013-10-31 13:29:29丑牛
日期:2014-02-14 11:25:54
2 [报告]
发表于 2012-05-25 14:20 |只看该作者
排序的依据是神马 难道用猜的?

论坛徽章:
0
3 [报告]
发表于 2012-05-25 14:21 |只看该作者
就是按时间的大小排序。

论坛徽章:
0
4 [报告]
发表于 2012-05-25 14:33 |只看该作者
my %hash;
while(<DATA>){
my ($key,$value) = split;
$hash{$key} = $value;
}
map{ print "$_  $hash{$_}\n"; }sort{ $a cmp $b } keys %hash;

__DATA__
2012-05-15    0.9443
2012-05-16    0.9460
2012-05-17    0.9442
2012-05-10    0.9463
2012-05-11    0.9432
2012-05-12    0.9385
2012-05-13    0.9400
2012-05-14    0.9447

论坛徽章:
145
技术图书徽章
日期:2013-10-01 15:32:13戌狗
日期:2013-10-25 13:31:35金牛座
日期:2013-11-04 16:22:07子鼠
日期:2013-11-18 18:48:57白羊座
日期:2013-11-29 10:09:11狮子座
日期:2013-12-12 09:57:42白羊座
日期:2013-12-24 16:24:46辰龙
日期:2014-01-08 15:26:12技术图书徽章
日期:2014-01-17 13:24:40巳蛇
日期:2014-02-18 14:32:59未羊
日期:2014-02-20 14:12:13白羊座
日期:2014-02-26 12:06:59
5 [报告]
发表于 2012-05-25 14:34 |只看该作者
sort keys %data

论坛徽章:
0
6 [报告]
发表于 2012-05-25 14:42 |只看该作者
按照四楼写法,问题解决了。谢谢各位朋友!

论坛徽章:
2
射手座
日期:2014-10-10 15:59:4715-16赛季CBA联赛之上海
日期:2016-03-03 10:27:14
7 [报告]
发表于 2012-05-25 14:47 |只看该作者

回复 1# linux68
  1. echo '| 2012-05-10 |    0.9463 |
  2. | 2012-05-11 |    0.9431 |
  3. | 2012-05-12 |    0.9385 |
  4. | 2012-05-13 |    0.9400 |
  5. | 2012-05-14 |    0.9447 |
  6. | 2012-05-15 |    0.9443 |
  7. | 2012-05-16 |    0.9460 |
  8. | 2012-05-17 |    0.9442 |
  9. | 2012-05-18 |    0.9415 |
  10. | 2012-05-19 |    0.9372 |
  11. | 2012-05-20 |    0.9352 |
  12. | 2012-05-21 |    0.9408 |
  13. | 2012-05-22 |    0.9098 |
  14. | 2012-05-23 |    0.9046 |
  15. | 2012-05-24 |    0.9169 |' \
  16. perl -nle '$data{$1.$2.$3}=$& if(/\|\s+(\d+)-(\d+)-(\d+)\s+\|.*/);END{map{print $data{$_}}sort {$b<=>$a}keys %data}'
  17. | 2012-05-24 |    0.9169 |
  18. | 2012-05-23 |    0.9046 |
  19. | 2012-05-22 |    0.9098 |
  20. | 2012-05-21 |    0.9408 |
  21. | 2012-05-20 |    0.9352 |
  22. | 2012-05-19 |    0.9372 |
  23. | 2012-05-18 |    0.9415 |
  24. | 2012-05-17 |    0.9442 |
  25. | 2012-05-16 |    0.9460 |
  26. | 2012-05-15 |    0.9443 |
  27. | 2012-05-14 |    0.9447 |
  28. | 2012-05-13 |    0.9400 |
  29. | 2012-05-12 |    0.9385 |
  30. | 2012-05-11 |    0.9431 |
  31. | 2012-05-10 |    0.9463 |

复制代码

论坛徽章:
0
8 [报告]
发表于 2012-05-25 22:36 |只看该作者
本帖最后由 tempo8 于 2012-05-25 22:38 编辑

回复 4# ludio333
http://www.360doc.com/content/07/0308/14/20755_389063.shtml
print map{ "$_ $hash{$_}\n";} sort {$a cmp $b} keys %hash;亦可!请问这与map{print}的区别何在?
谢谢!:wink:






   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP