perl學習日記6雜湊

2021-05-22 18:16:38 字數 2438 閱讀 5536

思考hash 

的方法是,把它看作一堆資料(a barrel of data

)(參見圖6-2

),每乙個資料都有乙個相應的標籤。可以通過標籤訪問此標籤對應的元素。但其中是沒有「第乙個」元素的概念的。在陣列中,陣列元素從0,1

,2 開始編號。但在hash

中,沒有確定的順序,因此也沒有第乙個元素。只是一些key/value 

對的集合。

keys 

和values 

均為任意的標量,但keys 

通常轉換為字串。因此,如果將表示式50/20 

作為key

s◆,則其通常被轉換為3

字元的字串「

2.5」

。這是上圖中的乙個key

。$hash

$family_name = 「flintstone」;

$family_name = 「rubble」

hash 

的key 

可以是任意的表示式:

$foo = 「bar」

print $family_name; #

輸出「rubble」

當將某個值儲存在已經存在的hash 

元素中,以前的值會被覆蓋

$family_name = 「flintstone」; #

新增或者替換已有的hash對,乙個key(

也包括value)

$family_name .= $family_name; #

建立乙個新元素,如果原來有則追加後賦值,如果沒有則直接建立

訪問不存在的hash 

元素得到undef

%family_name

%some_hash = (「foo」, 35, 「bar」, 12.4, 2.5, 「hello」, 「wilma」, 1.72e30, 「betty」, 「bye/n」);#

個數需偶,否則會警告

@array_array = %some_hash;#

我們把這稱為:將hash 

展開,並將其key/value 

對返回到乙個列表中。返回的key/value

對順序和存放的順序可能不同

%new_hash = %old_hash;#

不常用,因為效率較低

%inverse_hash = reverse %any_hash;#

反轉hash

,值和key

對調,但是最好你能確定原值是唯一的,否則系統採用覆蓋的方式賦值,而hash

又無序,所以你根本不知道到底誰覆蓋了誰。

my %last_name = (

「fred」 => 「flintstone」,

「dino」 => undef,

「barney」=> 「rubble」;

「betty」=> 「rubble」,

);keys 

函式會返回此hash 

的所有keys

,values 

函式將返回所有的values

my %hash = (「a」=>1, 「b」=>2, 「c」=>3);

my @k = keys %hash;

my @v = values %hash;

此時他們的順序使用者是不能控制的,一旦再有對新增,順序就會改變,但是如果a

是第乙個,那麼1

就也是第乙個

my $count = keys %hash; #

得到3,是指有3 

個key/value 

對,因為此時的上下文是數字標量

while (($key, $value) = each %hash)

還可以對返回的key

陣列進行排序

foreach $key (sort keys %hash);

print 「$key => $value/n」;

#也可以不使用額外的臨時變數$value

#print 「$key => $hash/n」;

}$books = 3;

$books = 1;

很容易知道hash 

的某個元素是true 

還是false

,像下面這樣:

if($books)

if(exists $books)

delete 

函式將某個給定的key

(包括其對應的value

)從hash 

中刪除。

my $person = 「betty」;

delete $books; #

將$person 

的借書卡刪除掉

foreach $person (sort keys %books)) items/n」 #fred 

有3個

}}但不支援整個hash 

的內插;「

%books

」僅是六個不同的字元%books

Perl語言學習筆記 6 雜湊

1 雜湊的鍵是唯一的,值可以重複!2 訪問雜湊元素 hashname 雜湊為大括號,陣列為方括號,鍵為字串 family name firstd 給雜湊元素賦值 3 雜湊鍵支援任意表示式 foo na family name 獲取 family name對應的值 4 訪問整個雜湊 family na...

Perl學習之雜湊 hash z

一 什麼是雜湊 雜湊是一種資料結構,和陣列類似,可以將值存放到其中,或者從中取回值。但是,和陣列不同的是,其索引不是數字,而是名字。也就是說,索引 這裡,我們將它叫key 不是數字而是任意的唯一的字串。key可以是任意的字串,你可以使用任何的字串作為key,但它們是唯一的。另一種思考hash 的方法...

perl 雜湊 hash 學習筆記( )

1.什麼是雜湊 雜湊是perl的一種資料型別,比較類似陣列,用於存放資料,包括2部分關鍵字keys和值value。不同於陣列,雜湊訪問元素的是按照名字訪問標量的key value.hash 用 來標示 2.hash 操作 a.增加 my hash 定義 第一種寫法 hash young author...