perl 将数组的元素对应为hash的key 和value
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了perl 将数组的元素对应为hash的key 和value相关的知识,希望对你有一定的参考价值。
sub readDic
my($dic)=@_;
open(In,$dic);
while(<In>)
chomp;
@item=split(" ",$_);
$len=length($item[1]);#词语
$word=substr($_,0,$len);
$pin=substr($_,$len,length($_)-$len);#拼音
%pinyin=();
$pinyin$word=$pin;
close(In);
我把文件的每一行按“:”拆分后放到一个数组里,希望数组的第一个值是hash表的key,第二个值是hash表的value。执行后结果只能显示最后一行,这样写有错误么?
照你的原意, 应该将 %pinyin=() 放在 while 之前. ( 其实不写这一行都可以 ) 参考技术A %pinyin=();放到open后面试试。
perl学习hashes
一: 哈希概念
是一种数据结构,可容纳很多值,并能随机存取;由关键字与索引值构成<key,value>;
key值是唯一的
二: 应用场景:
根据主机名找对应的IP地址,
根据IP地址找主机名,
按单词统计出现的次数,
按驾照号码找出对应的姓名
....................
三: 哈希的声明与赋值
1: 声明%
eg:my %tab;
2: 赋值
A:使用列表对哈希进行赋值,但必须有偶数个成员(键/值对)。例如
B:可用箭头符号=>将哈希赋值中的键/值区分开来
3: hash可转换成列表
eg:my @arrays = %tab;
4: hash复制
eg:my %new_hash=%hash;
my %inverse_hash=reverse %hash(哈希值value唯一的情况才有效)
5: 访问哈希元素
A:访问hash中的单个元素,使用花括号
eg:my $value = $scores{$key};
my $value2 = $scores {"xiaoming"};
B:可以将单个的哈希元素内插到双引号字符串中
eg:print “xiaoli\'s score is $scores{"xiaoli"}\\n”;
C:%ENV 获取系统环境的配置信息(path)
eg:
6: 例子
输出:
use Data::Dumper;
print Data::Dumper->Dumper([\\%scores1],[\'scores1\']); #调用类Data::Dumper
三: 哈希操作
1: keys
返回关键字列表;my @name = keys %scores;
2: values
返回值列表;my @scores = values%scores;
3: each
返回一对值;my($name,$score) = each %scores
4: exists
检查hash中是否存在指定的关键字,存在返回1;my $person = "xiaoming"; exists $scores{$person};
5: delete
删除hash中指定的键与对应的值;delete $scores{$person};
6: 例子
接上文
输出:
以上是关于perl 将数组的元素对应为hash的key 和value的主要内容,如果未能解决你的问题,请参考以下文章
[perl] perl 中二维哈希hash 与python 二维字典dict
HashMap中 get(K key) 和 put(K key,V value) 的具体过程