免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 45223 | 回复: 19

哪位朋友有三重哈希构建、遍历、查询的例子 [复制链接]

论坛徽章:
0
发表于 2016-08-08 21:39 |显示全部楼层
我要构建一个汉语词典的哈希表,一个汉字可以有多个的拼音,每一个拼音可以有多个义项,应该是3重哈希了。
哪位朋友有三重哈希构建、遍历、查询的例子?

论坛徽章:
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
发表于 2016-08-08 21:53 |显示全部楼层
>>一个汉字可以有多个的拼音,每一个拼音可以有多个义项,

一个汉字 ==> hash
多个的拼音 ==> array
每一个拼音可以有多个义项 ==> array

论坛徽章:
0
发表于 2016-08-08 22:06 |显示全部楼层
jason680 发表于 2016-08-08 21:53
>>一个汉字可以有多个的拼音,每一个拼音可以有多个义项,

一个汉字 ==> hash


我也觉得这样更合理,但没有这样用过,想有个例子。

论坛徽章:
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
发表于 2016-08-08 22:17 |显示全部楼层
本帖最后由 jason680 于 2016-08-08 22:22 编辑

you got it

wait for an example ......

      ||
      ||
      ||
\\   ||  //
  \\ || //
   \\||//

论坛徽章:
307
程序设计版块每周发帖之星
日期:2016-04-08 00:41:33操作系统版块每日发帖之星
日期:2015-09-02 06:20:00每日论坛发贴之星
日期:2015-09-02 06:20:00程序设计版块每日发帖之星
日期:2015-09-04 06:20:00每日论坛发贴之星
日期:2015-09-04 06:20:00每周论坛发贴之星
日期:2015-09-06 22:22:00程序设计版块每日发帖之星
日期:2015-09-09 06:20:00程序设计版块每日发帖之星
日期:2015-09-19 06:20:00程序设计版块每日发帖之星
日期:2015-09-20 06:20:00每日论坛发贴之星
日期:2015-09-20 06:20:00程序设计版块每日发帖之星
日期:2015-09-22 06:20:00程序设计版块每日发帖之星
日期:2015-09-24 06:20:00
发表于 2016-08-09 18:55 |显示全部楼层
找了个字, 做下说明:

(樂)

欢喜,快活:快乐。乐境。乐融融。乐不可支。其乐无穷。乐观(精神愉快,对事物的发展充满信心)。乐天(安于自己的处境而没有任何忧虑)。
使人快乐的事情:取乐。逗乐。
对某事甘心情愿:乐此不疲。乐善好(h刼 )施。
笑:这事太可乐了。
忧苦哀悲


(樂)
yuè
 ㄩㄝˋ
声音,和谐成调的:音乐。声乐。乐池。乐音(有一定频率,和谐悦耳的声音)。乐歌(a.音乐与歌曲;b.有音乐伴奏的歌曲)。乐正(周代乐官之长)。乐府(原是中国汉代朝廷的音乐官署,主要任务是采集民间诗歌和乐曲;后世把这类民歌或文人模拟的作品亦称作“乐府”)。
姓。
忧苦哀悲


大神, 我想问下. 对于 乐 字, 您老说的 义项 指的是哪些? 又希望通过怎样的方式进行查询?

论坛徽章:
6
丑牛
日期:2014-03-21 15:42:04子鼠
日期:2014-04-12 11:50:17处女座
日期:2014-09-01 09:25:1115-16赛季CBA联赛之吉林
日期:2015-12-22 14:01:5215-16赛季CBA联赛之广东
日期:2016-03-08 18:49:422016科比退役纪念章
日期:2016-07-06 12:19:55
发表于 2016-08-09 22:11 |显示全部楼层
本帖最后由 stanley_tam 于 2016-08-09 22:11 编辑

什么鬼,貌似不是3重,2重就够了
  1. #!perl

  2. #数据结构
  3. my $href = {
  4.     'chinese_char1' => {
  5.         'pinyin1' => ['meaning1', 'meaning2'],
  6.         'pinyin2' => ['meaning1', 'meaning2'],
  7.     },
  8.     'chinese_char2' => {
  9.         'pinyin1' => ['meaning1', 'meaning2'],
  10.         'pinyin2' => ['meaning1', 'meaning2'],
  11.     },
  12. }

  13. #构建
  14. my $href;
  15. push @{ $href->{'chinese_char'}->{'pinyin1'} }, 'meaning1',

  16. #遍历
  17. for my $char (keys %{ $href }){

  18.     for my $pinyin ( keys %{ $href->{$char} } ){
  19.         my @meanings = @{ $href->{$char}->{$pinyin} };
  20.     }
  21. }

  22. # 查询
  23. my $char = 'chinese_char2';
  24. my $pinyin = 'pinyin1';
  25.     #获取语义项
  26. my $meaning_aref = $href->{$char}->{$pinyin};

  27. __END__
复制代码

评分

参与人数 1信誉积分 +10 收起 理由
hztj2005 + 10 很给力!

查看全部评分

论坛徽章:
307
程序设计版块每周发帖之星
日期:2016-04-08 00:41:33操作系统版块每日发帖之星
日期:2015-09-02 06:20:00每日论坛发贴之星
日期:2015-09-02 06:20:00程序设计版块每日发帖之星
日期:2015-09-04 06:20:00每日论坛发贴之星
日期:2015-09-04 06:20:00每周论坛发贴之星
日期:2015-09-06 22:22:00程序设计版块每日发帖之星
日期:2015-09-09 06:20:00程序设计版块每日发帖之星
日期:2015-09-19 06:20:00程序设计版块每日发帖之星
日期:2015-09-20 06:20:00每日论坛发贴之星
日期:2015-09-20 06:20:00程序设计版块每日发帖之星
日期:2015-09-22 06:20:00程序设计版块每日发帖之星
日期:2015-09-24 06:20:00
发表于 2016-08-09 22:43 |显示全部楼层
回复 6# stanley_tam
大师, 我问下 想这个问题用对象 是否合适?

   

论坛徽章:
0
发表于 2016-08-09 22:45 |显示全部楼层
sunzhiguolu 发表于 2016-08-09 18:55
找了个字, 做下说明:


义项,正规词典就是按义项解释的。同时给以编号。1、2、3、4···。
你这是网络词典,比较马虎。比如下面就是两个义项。

使人快乐的事情:取乐。逗乐。
对某事甘心情愿:乐此不疲。乐善好施。

至于查询,目前主要就是用正则表达式做一些有限的信息搜索。

论坛徽章:
0
发表于 2016-08-09 22:51 |显示全部楼层
本帖最后由 hztj2005 于 2016-08-10 13:55 编辑
stanley_tam 发表于 2016-08-09 22:11
什么鬼,貌似不是3重,2重就够了


谢谢指点!

如果单纯用哈希就是3重。你这是1维哈希加2维数组。

我试着实现了,目前还有一点问题,就是拼音加入数组后,再读出,有些就成了乱码,而汉语释义则毫无问题。

不过我目前不很关心拼音,就先放着。

论坛徽章:
0
发表于 2016-08-10 11:38 |显示全部楼层
回复 6# stanley_tam



谢谢!这个代码可行:

push @{ $href->{'红'}->{'hong'} }, '颜色';
push @{ $href->{'红'}->{'hong'} }, '红色代表着吉祥、喜气、热烈、奔放、激情、斗志、革命。';
# 查询
my $char = '红';
my $pinyin = 'hong';
    #获取语义项
my $meaning_aref = $href->{$char}->{$pinyin};

print @$meaning_aref[1]; #输出红色代表着吉祥、喜气、热烈、奔放、激情、斗志、革命。


原来只用一维数组,这是第一次用多维数组,学了些引用数组的技术。     
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP