免费注册 查看新帖 |

Chinaunix

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

如何按照hash的value的顺序来取hash中的数据 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-03-01 16:36 |只看该作者 |倒序浏览
比如说,我有这样一个结构存在了hash中
%ahash=(1=>"name1",2=>"name2",$id=>$name);
这样的结构,可是我取出数据显示出来时,希望hash的键值来排序进行显示,
应该如何处理呢?

一般我取的方法总是先用sort对key 进行排序
foreach $akey(sort keys(%ahash))
{
     $ahash{$akey}
}
这样就能对按key的顺序把数据取出来,可是如何按value的顺序来取数据呢

论坛徽章:
0
2 [报告]
发表于 2006-03-01 16:42 |只看该作者

能根据哈希表的value来取得相应的key吗

或者这个问题可以变成,能根据哈希表的value来取得相应的key吗?
不用那种全循环历遍匹配的方法,有方便的吗?

或者正确的解决方法是我这样的结构应该使用二维数组来操作?

[ 本帖最后由 neil_young 于 2006-3-1 16:58 编辑 ]

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
3 [报告]
发表于 2006-03-01 16:45 |只看该作者
  1. foreach $akey( sort {$ahash{$a} <=> $ahash{$b}} keys(%ahash) )
  2. {
  3.      $ahash{$akey}
  4. }
复制代码

论坛徽章:
0
4 [报告]
发表于 2006-03-01 17:27 |只看该作者
楼上的法师,这个有点小问题啊,
估计是这个<=>不支持字符串的操作吧。
Argument "b" isn't numeric in numeric comparison (<=>)

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
5 [报告]
发表于 2006-03-01 17:30 |只看该作者
你怎么就不会举一反三呢?
如果是字符串,就换成 cmp

论坛徽章:
0
6 [报告]
发表于 2006-03-01 17:41 |只看该作者
原帖由 flw 于 2006-3-1 17:30 发表
你怎么就不会举一反三呢?
如果是字符串,就换成 cmp

谢谢了,您批评的是。
其实是因为我对<=>和cmp这几个东东都不熟悉。

还有问一下,这种操作的效率高不高啊,或者这种结构还是应该用二维的数组来存取才比较正确呢?

再次感谢flw的热情帮助!

[ 本帖最后由 neil_young 于 2006-3-1 18:55 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP