我有一個哈希,想洗掉一些元素(元素=鍵 值)。按鍵洗掉元素很容易,但是如果要洗掉的條件是基于值的,我不知道該怎么做。
my %h = ( 'a' => 1
, 'b' => 1
, 'c' => 2
);
# delete by key
delete $h{'c'};
print map { "$_ $h{$_}\n" } keys %h;
# a 1
# b 1
我想使用以下值洗掉:
delete %h value >1
uj5u.com熱心網友回復:
您可以有效地回圈使用each和delete匹配的條目:
#!/usr/bin/env perl
use strict;
use warnings;
use Data::Dumper;
my %h = (
'a' => 1,
'b' => 1,
'c' => 2
);
while (my ($k, $v) = each %h) {
delete $h{$k} if $v > 1;
}
print Dumper(\%h);
從檔案(each強調添加):
任何插入到散列中的操作都可能會更改順序,任何洗掉操作也會更改,但每個或多個鍵回傳的最新鍵可能會在不更改順序的情況下被洗掉。
這意味著上述回圈可以安全地查看散列的每個元素并洗掉所有符合條件的元素。
您還可以使用切片一次洗掉多個條目。只需構建要洗掉的鍵串列,例如通過過濾以下結果keys:
delete @h{grep { $h{$_} > 1 } keys %h};
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/422449.html
標籤:
上一篇:使用perl從更新網站獲取資料
