zoukankan      html  css  js  c++  java
  • Perl语言入门笔记 第六章 哈希(hash)

    =pod
    
    哈希
    
        哈希表里只是一堆的键值对而已,而没有任何顺序,键可以是任意字符串,值也是
        awk的哈希键值对增多的时候会逐渐变慢,而perl没有这个缺点
    
     访问哈希元素:
        $hash{$some_key}
    
        foreach my $person (qw< barney fred >)
        {
            print "I'v heared of $person $family_name{$person}.
    ";
        }
        在挑选哈希名的时候,最好使得哈希名和键之间能放进去一个"for"字,比如"family_name for fred"是filntstone,
        因此把哈希命名为family_name能清晰地反映出键和值之间的关系。
        $foo = 'bar';
        print $family_name{$foo . 'ney'}; #打印"rubble",连接在一块
    
    
        哈希可以被转换成列表
    
        哈希赋值:
            不是常见用法,但哈希真的可以用一般的赋值语法来赋值;
                my %new_hash = %old_hash;
                得到一个反序的哈希:键值互换
                my %inverse_hash = reverse %any_hash;
    
     胖箭头:
        my $last_name = (
            'fred' => 'flintstone',
            'dino' => 'undef',
        );
    
    哈希函数:
        perl中有很多有用的函数可以一次处理整个哈希。
        keys函数能返回哈希的键列表,而values函数能返回对应的值列表。如果哈希没有任何的成员,则两个函数都返回空列表
    
        my @k = keys %hash;
        my @v = values %hash;
        上面的keys和values是一一对应的
        得到哈希中元素的个数:
            my $count = keys %hash;
            my $count = values %hash;
            if(%hash)
            {   }
    
        each函数:
            唯一适合使用each的地方
            while(my($key, $value) = each %hash)
            {   }
    
        foreach函数:
            foreach $key (sort keys %hash)
            {   }
    
        判断某项哈希元素的真假:
            if($book{$some})
            {   }
    
        exists函数:
            检查哈希中是否存在某个键,可以使用exists函数
            if(exists $book{"dino"})
            {   }
    
        delete函数:
            my $person = "betty";
            delete $book{$person}; #撤销$person的借书证
            上面"将undef存入哈希元素"并不相同,在这两种情况下,exists($books{"betty"})会得出相反的结果。在delete之后,键便不会出现在哈希之中,但存入undef后,键却是一定会存在的。
    
     哈希元素的内插:
        可以将单一哈希元素内插到双引号引起的字符串中。
        foreach $person (sort keys %books)
        {
            if($book{$person})
            {
                print "$person has $books{$person} items
    ";
                #但这种方式不支持内插整个hash表
            }
        }
    
    %ENV哈希:
        print “PATH is $ENV{PATH}
    ”;
    
    =cut
    

  • 相关阅读:
    解决tomcat服务器跨域问题
    HashMap数据结构面试
    Gitlab,jenkins 安装及配置 【CICD】
    linux虚拟机——基本操作指令
    MYSQL优化思路总结
    DeepFaceLab:快让rtx30系列的提取速度翻倍吧!!!
    Google Colab V100 +TensorFlow1.15.2 性能测试
    滴滴云A100 40G+TensorFlow1.15.2 +Ubuntu 18.04 性能测试
    矩池云 RTX 2080 Ti+Ubuntu18.04+Tensorflow1.15.2 性能测试!
    NVIDIA A100跑DeepFaceLab,日迭代破百万,像素上800!
  • 原文地址:https://www.cnblogs.com/v-BigdoG-v/p/7398618.html
Copyright © 2011-2022 走看看