生信自学网-速科生物-生物信息学数据库挖掘视频教程

主页 > 生信编程 >

Perl生信应用哈希hash

生信Perl编程
哈希(%)
哈希的定义
哈希是英译(它的英文名叫Hash,也可以译作『散列』,以下为了文字都写作『哈希』),就是把任意长度的输入(也叫预映射,pre-image),通过哈希算法,变换成固定长度的输出,该输出就是哈希值(value)——哈希 = 预映射(键,key) + 哈希值(值,value)
通过哈希算法进行的这种转换是一种压缩映射,也就是,哈希值的空间通常小于输入的空间,不同的输入可能形成相同的输出,所以不可能从哈希的值来确定唯一的输入值(不妨想想一个在某一区间上不单调的函数,有助于理解)

哈希表(Hash Table)
是根据存储数据的关键码直接进行访问的数据结构,也就是说,它直接把关键码也映射到表中的一个位置来访问记录(这个映射函数就是哈希函数),存放记录的数组就叫『哈希表』
1、哈希是key/value对的集合
如何理解键/值对呢?举个例子,比如我们的身份证号码,一个名字对应着一个身份证号码,在这里身份证号码就是键,键必须是唯一的,名字就是值,值可以重复。
使用哈希的好处:读取速度快,因为键是唯一的,所以找到key,就可以很快找到value。

2、Perl中哈希编程已百分号(%)标记开始
3、访问哈希元素格式:${key}
接下来,我们定义一个简单的哈希:

###Video source: http://study.163.com/provider/1026136977/index.htm?share=2&shareId=1026136977
######Video source: http://www.biowolf.cn/shop/
######生信自学网: http://www.biowolf.cn/
######合作邮箱:2749657388@qq.com
######答疑微信: 18520221056
use strict;
use warnings;
my %hash1=('biowolf','biowolf.cn','jingdong','jd.com','taobao','taobao.com');

print"$hash1{'biowolf'}\n";
print"$hash1{'jingdong'}\n";
print"$hash1{'taobao'}\n";

遍历哈希:

use strict;
use warnings;
my %hash1=('biowolf','biowolf.cn','jingdong','jd.com','taobao','taobao.com');

print"$hash1{'biowolf'}\n";
print"$hash1{'jingdong'}\n";
print"$hash1{'taobao'}\n";
哈希增加元素:
use strict;
use warnings;
my %hash1=('biowolf','biowolf.cn','jingdong','jd.com','taobao','taobao.com');

$hash1{'baidu'}='baidu.com';
foreach my $key(keys %hash1){
	print $key."\t";
  print $hash1{$key} . "\n";
}

哈希删除元素:
use strict;
use warnings;
my %hash1=('biowolf','biowolf.cn','jingdong','jd.com','taobao','taobao.com');

delete($hash1{'jingdong'});
foreach my $key(keys %hash1){
	print $key."\t";
  print $hash1{$key} . "\n";
}

判断是否存在key

use strict;
use warnings;
my %hash1=('biowolf','biowolf.cn','jingdong','jd.com','taobao','taobao.com');

if(exists $hash1{'biowolf'}){
	print "it is exists\n";
}
else{
	print "it isn't exists\n";
}


如果需要快递学习perl在生信中的应用,可以学习我们娥课程《Perl在生物信息学应用》
(责任编辑:伏泽   微信:18520221056)

森莘老师微信二维码