您好,登錄后才能下訂單哦!
小編給大家分享一下Perl哈希表是什么,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
Perl基礎 Perl 哈希表
一、什么是Perl 哈希表
Perl 哈希表是一種數據結構,和數組類似,可以將值存放到其中,或者從中取回值。但是,和數組不同的是,其索引不是數字,而是名字。也就是說,索引(這里,我們將它叫key)不是數字而是任意的***的字符串。
key可以是任意的字符串,你可以使用任何的字符串作為key,但它們是***的。
另一種思考hash的方法是,把它看作一堆數據(abarrelofdata),每一個數據都有一個相應的標簽。可以通過標簽訪問此標簽對應的元素。但其中是沒有“***個”元素的概念的。在數組中,數組元素從0,1,2開始編號。但在hash中,沒有確定的順序,因此也沒有***個元素。只是一些key/value對的集合。
keys和values均為任意的標量,但keys通常轉換為字符串。因此,如果將表達式50/20作為keys,則其通常被轉換為3字符的字符串“2.5”。
由于Perl的“沒有不必要的限制”的設計哲學:hash可以是任意大小,從空hash(沒有key/value對),到任何你內存允許的大小。
keys是***的,但values可以重復。hash的value可以是數字,字符串,undef,或者它們的混合,但key是***的。
為什么使用Perl 哈希表
可以把hash看作一個簡單的數據庫,其中每一個key下面可以有一塊數據。如果你的任務是關于:“查詢重復的”,“***的”,“交叉引用的”,“查詢表”,則hash很可能在這類應用中幫上你的忙。
二、Perl 哈希表元素的存取
要訪問hash元素,可以使用下面的語法:$hash{$some_key}
這和訪問數組元素的方法有些類似,這里下標(key)上使用的是花括號({}),而不是方括號([])。現在key的表達式是字符串,而非數字。
hash的名字和Perl中其它的標識符的命名規則是一樣的(字母,數字,下劃線組成,但不能由數字開頭)。
訪問不存在的hash元素將得到undef。
1.作為整體的hash
要引用整個hash,使用百分號(%)作為前綴。
為了方便,hash可以轉換為列表,或者反過來。
2.Perl 哈希表賦值
可以使用如下的語法在hash之間拷貝:
%new_hash=%old_hash;
將hash轉變成其它形式更加常見。例如,我們可以將hash反轉:
%inverse_hash=reverse%any_hash;
3.大箭頭符號(=>)
當給hash賦值時,有時并不明顯哪些元素是keys,那些是values,因此發明了大箭頭符號(=>)。在需要逗號的時候,都可以使用大箭頭符號替換。
如:
my%last_name=(
"www"=>1,
"eee"=>2,
);
三、Perl 哈希表函數
某些有用的函數可以對整個hash進行操作。
1.keys和values函數
keys函數會返回此hash的所有keys,values函數將返回所有的values。如果hash中沒有元素,則此函數將返回空列表。
my%hash=("a"=>1,"b"=>2,"c"=>3);
printmy@k=keys%hash;
printmy@v=values%hash;
2.each函數
如果想迭代hash的每一個元素,一種通常的方法是使用each函數,它將返回key/value對應的2個元素列表。
當對同一個hash函數進行一次迭代時,將返回下一個key/value對,直到所有的元素均被訪問。如果沒有更多的key/value對,則each函數將返回空表。
my%hash=("a"=>1,"b"=>2,"c"=>3);
while(($key,$value)=each%hash)
{
print"$key=>$value\n";
}
當然,each返回的key/vlaue對,順序是混亂的(它其順序和keys和values函數返回的順序相同)。如果想將其按序排放,可以對它們排序(使用sort)。
my%hash=("a"=>1,"b"=>2,"c"=>3,"d"=>4);
foreach$key(sortkeys%hash)
{
$value=$hash{$key};
print"$key=>$value\n";
}
四、Perl 哈希表的通常用法
1.exists函數
要查看hash中是否存在某個key,可以使用exists函數,如果hash中存在此key,則返回true,與是否有對應的value無關。
my%hash=("a"=>1,"b"=>2,"c"=>3,"d"=>4);
if(exists$hash{'a'})
{
print"true";
}
2.delete函數
delete函數將某個給定的key(包括其對應的value)從hash中刪除。如果不存在這個key,則什么也不做,不會有警告或者錯誤信息。
my%hash=("a"=>1,"b"=>2,"c"=>3,"d"=>4);
delete$hash{'a'};
foreach$key(sortkeys%hash)
{
$value=$hash{$key};
print"$key=>$value\n";
}
3.Perl 哈希表元素的內插
你可以在雙引號的字符串中使用單個hash元素,但不支持整個hash的內插。
my%hash=("a"=>1,"b"=>2,"c"=>3,"d"=>4);
foreach$key(sortkeys%hash)
{
print"$key=>$hash{$key}\n";
}
<type="text/javascript"><type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
以上是“Perl哈希表是什么”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。