1. 程式人生 > >perl雜湊hash的常見用法介紹

perl雜湊hash的常見用法介紹

基本用法

#初始化%h為空陣列 %h={};
#用陣列初始化%h為a=>1,b=>2  %h=('a',1,'b',2);
#意義同上,只是另一種更形象化的寫法。%h=('a'=>1,'b'=>2);
#如果key是字串,可以省略引號。下面這行和上面那行是一樣的%h=(a=>1,b=>2);
#用{}來訪問print “$h{a}\n”;
#列印 $h{b}='2b'; print “$h{b}\n”; #列印2b
#刪除key用delete   delete$h{b};  #從$h刪除'b'

清空Perl Hash
undef %h;

得到hash的所有鍵值
#得到所有keys,順序取決於hash函式,或者說是亂序@all_keys=keys%h;  #所有鍵值,是按hash的值從大往小排列的。值的比較是數字比較(比如說,10>9) ,  @all_keys=sort{$h{$b} => $h{$a}}(keys%h);

判斷Perl Hash是否包含key
 exists($h{$key});

Perl Hash的長度
想要知道一個hash存放多少資料
$hash_size=keys%h #把%h的長度放到$hash_size中print scalar keys %h,"\n"; #列印%h的長度。這裡用了scalar來返回陣列長度。

遍歷一個Perl Hash
while(my($k,$v)=each%h){print"$k--->$v\n";}

Reference引用
Reference類似於C/C++的指標
$h_ref=\%h;    #獲得一個hash的reference,   %aHash=%{$h_ref};   #把hash reference當成hash用 $value=$h_ref->{akey}; #這個和%h{akey}是一樣的

傳遞Perl Hash到函式
一般都是傳遞一個reference到函式
%h=(); $h{a}=1; foo(\%h); print $h{b},"\n"; #打印出2。這個值來自於函式foo(), sub foo{my ($h)[email protected]_; print $h->{a},"\n"; #打印出1 $h->{b}=2;}

函式返回hash,或者hash引用(hashreference)
函式可以返回Perl Hash
sub foo{my %fh; $fh{a}=1; return %h;} my %h=foo(); print "$h{a}\n"; #打印出1
但是這樣等於把整個hash從%fh複製到了%h,效率比較低。可以考慮返回hash的引用:
sub foo{my %fh; $fh{a}=1; return \%fh;} my $hr=foo(); print "$hr->{a}\n"; #打印出1.  my %h=%{foo()} #如果就是想複製,也可以用這種方法。不用擔心在sub foo裡的%fh是區域性變數,Perl會自動管理記憶體。它會發現%fh被$hr引用,就不會清理%fh的記憶體,並且$hr失效後釋放記憶體。

相關推薦

perlhash常見用法介紹

基本用法 #初始化%h為空陣列 %h={}; #用陣列初始化%h為a=>1,b=>2  %h=('a',1,'b',2); #意義同上,只是另一種更形象化的寫法。%h=('a'=>1,'b'=>2); #如果key是字串,可以省略引號。下面這行和上面

Atititt java redis jedis 使用 Redis體系 Redis 命令 Redis 命令Redis 鍵(key)Redis 字串(String)Redis (Hash)R

Atititt java redis jedis  使用   Redis體系   Redis 命令 Redis 命令Redis 鍵(key)Redis 字串(String)Redis 雜湊(Hash)Redis 列表(List)Redis

Redis的(Hash)型別

        Redis是採用字典結構以key-value的形式儲存資料的,在雜湊型別(所謂的hash)中的value也是一種字典結構。如果用關係表結構去理解,就是key為物件,value是屬性和屬性值。如下圖: 所以使用雜湊(hash)型別,可以

字串[hash模板]

有這麼一類神奇的問題,給你一堆字串,然後問你有多少本質不同的字串 ~~ 或許有頭鐵的同志可以開一個map ~~ 所以有了hash大法 大致思想 我們判斷兩個字串相等,無非就是判斷他們每一位是不是相等,但是如果讓你判斷兩個數字是不是相等,是不是就簡單了許多呢?

C#:索引器用法、集合(動態陣列,堆疊,佇列,表)用法、指標(fixed關鍵字)用法

1.索引器用法   http://www.runoob.com/csharp/csharp-indexer.html 2.集合用法   http://www.runoob.com/csharp/csharp-collection.html 3.指標用法

什麼是Hash演算法

計算機領域內的大多數查詢演算法都與儲存資料的規模呈正相關,用於衡量查詢演算法效率的量我們稱為平均查詢長度,一般情況下,比較優秀的查詢演算法的平均查詢長度也不會短於資料規模以2為底的對數()。 雜湊演算法中,我們把資料項中的關鍵字用一種特定的對應關係和儲存資料項的地址或地址偏移量對應起來。注意:這種對應一般不是

redis基本命令--(Hash)

1. 介紹 Redis hash 是一個string型別的field和value的對映表,hash特別適合用於儲存物件。 1.1例子 127.0.0.1:6379> HMSET runoobkey name "redis tutorial" d

URL中的#號(URLHash

一、#的涵義#代表網頁中的一個位置。其右面的字元,就是該位置的識別符號。比如,  http://www.example.com/index.html#print就代表網頁index.html的print位置。瀏覽器讀取這個URL後,會自動將print位置滾動至可視區域。為網頁

(Hash)與加密(Encrypt)的基本原理、區別及工程應用

0、摘要       今天看到吉日嘎拉的一篇關於管理軟體中資訊加密和安全的文章,感覺非常有實際意義。文中作者從實踐經驗出發,討論了資訊管理軟體中如何通過雜湊和加密進行資料保護。但是從文章評論中也可以看出很多朋友對這個方面一些基本概念比較模糊,這樣就容易“照葫蘆畫瓢”,不能根據自身具體情況靈活選擇和使

Redis物件——(Hash)

雜湊在很多程式語言中都有著很廣泛的應用,而在Redis中也是如此,在redis中,雜湊型別是指Redis鍵值對中的值本身又是一個鍵值對結構,形如`value=[{field1,value1},...{fieldN,valueN}]`,其與Redis字串物件的區別如下圖所示: ![Redis-Hash](ht

Bloom Filter 主流Hash演算法介紹

     在雲端計算中的資料儲存方面,雜湊對提高查詢效率起著很大的作用,雜湊函式是將字串或者數字作為輸入,通過計算輸出一個整數,理想的雜湊函式輸出非常均勻分佈在可能的輸出域,特別是當輸入非常相似的時候

Supervisord常見用法介紹

進程 管理工具 share viso 使用介紹 開啟 com aso process Supervisord是用Python實現的一款非常實用的進程管理工具。supervisord會幫你把管理的應用程序轉成daemon程序,而且可以方便的通過命令開啟、關閉、重啟等操作,而且

Hash(/)表中衝突處理及命中計算

前言   本片部落格主要講的是雜湊表中簡單的衝突處理的方法,以及命中率計算。原理方面基本沒有講解,基本就講個方法,主要用於知識記錄以及幫助一些刷題玩家瀏覽。   簡而言之,不講技術,只講方法。 引言   寫這篇部落格的契機是在刷pat甲級題遇到了一道寫雜湊的題目,結果英文太次被欺負了。之後靠翻譯讀懂題

Android 獲取證書籤名以及key hash

1、獲取Android應用簽名MD5/sha1/SHA256等證書指紋 keytool -v -list -keystore  uuoversea_tw.jks 2、獲取Android應用key hash 雜湊值  keytool -exportcert -alias

九章演算法筆記 8.表與堆 Hash & Heap

大綱 cs3k.com 資料結構概述 雜湊表 Hash: a.原理  b.應用 堆 Heap: a.原理    b.應用-優先佇列 Priority Queue  c.替代品-TreeMap   資料結構的兩類問題 cs3k

HashSet 的常見用法及對應原始碼介紹

1、介紹 HashSet是一個沒有重複元素的集合,無序的,他事通過HashMap實現的,所以他也是執行緒不安全的。接下來介紹使用。 2、使用 1、構造方法 HashSet<Integer> hashSet = new HashSet<>(); Ha

【分散式】一致性 Distributed Hash Table 學習筆記

目錄 一致性雜湊介紹 一致性雜湊原理 一致性雜湊應用 1、一致性雜湊介紹        一致性雜湊,英文:distributed hashtable, 簡稱DHT, 是麻省理工提出的一種演算法,該演算法可以有效解決分散式儲存結

學習演算法之二:基於hash的ANN框架

在上一節瞭解了ANN的背景,簡單介紹了hash的演算法,那基於hash的ANN框架是怎樣的呢? 框架圖 框架說明 基於hash的ANN主要有四個步驟,包括特徵提取、hash編碼(學習+編碼)、漢明距離排序、重排序。 1、特徵提取 有查詢影象和影象資料庫,需要對這兩類分別

學習演算法之一:ANN背景介紹

一、由ANN進入Hash NN,即最近鄰(nearest neighbor),定義在一個數據集X中,查詢點q的最近鄰是NN(q)=argmin dist(q,x) 其中x∈X。直接的表示,即為KNN查詢,也就是需要找到K個最近鄰。一個點x和查詢點q的距離取決於具體的查詢問題。例如:d維空

函式(函式,Hash Function)

說明          雜湊的概念屬於查詢,它不以關鍵字的比較為基本操作,採用直接定址技術。在理想情況下,查詢的期望時間為O(1)。 簡單的說,hash函式就是把任意長的輸入字串變化成固定長的輸出字串的一種函式。輸出