如何从 perl hash 中获取一个随机的键(逛逛cu perl板块)

来源:转载

如果是在python中没什么好说的,直接取出来所有的key,然后直接random.choice就行了,如下:

In [119]: dOut[119]: {'a': 1, 'b': 2, 'c': 3, 'd': 4}In [120]: keys = d.keys()In [121]: import randomIn [122]: random.choice(keys)Out[122]: 'a'In [123]: random.choice(keys)Out[123]: 'b'In [124]: random.choice(keys)Out[124]: 'b' 下面看下在perl中大家是怎么处理的。

第一种方式,取出所有的keys放到@aKeys,然后计算数组的长度$sMaxIndex,对$sMaxIndex执行rand函数得到一个随机数,然后使用这个随机数作为索引去访问数组@aKeys,得到一个随机的键。

#!/usr/bin/perluse utf8;use strict;use warnings;use Data::Dumper;my %hChars = ( 'A' => 'a', 'B' => 'b', 'C' => 'c', 'D' => 'e', 'E' => 'e', 'F' => 'f',);print Dumper(/%hChars);my $sMaxIndex = scalar(keys %hChars);my @aKeys = keys %hChars;my $sKey = $aKeys[int(rand $sMaxIndex)];print Dumper($sKey);

第二种方法跟上面提到的python的解决方式类似,如下:

#!/usr/bin/perluse utf8;use strict;use warnings;use Data::Dumper;use List::Util qw(shuffle);my %hChars = ( 'A' => 'a', 'B' => 'b', 'C' => 'c', 'D' => 'e', 'E' => 'e', 'F' => 'f',);print Dumper(/%hChars);my $sRandomKey = shuffle(keys %hChars);print Dumper($sRandomKey); 参考资料:

已经解决.结贴 脚本 Perl - 如何从 hash 中获取一个随机的键: http://bbs.chinaunix.net/thread-4193152-1-1.html

← CDN 95值计费的意思

分享给朋友:
您可能感兴趣的文章:
随机阅读: