我正在寻找用 Perl 表达这个 Python 片段的方法:
data = {"A": None, "B": "yes", "C": None}
key_list = [k for k in data if data[k]]
# in this case the same as filter(lambda k: data[k], data) but let's ignore that
所以从一种角度来看,我只想要值所在的键None or undef。从另一个角度来看,我想要的是简洁的 perl 等价物带条件的列表理解 http://docs.python.org/tutorial/datastructures.html#list-comprehensions.
我想你想要grep http://perldoc.perl.org/functions/grep.html:
#!/usr/bin/env perl
use strict;
use warnings;
my %data = ( A => undef, B => 'yes', C => undef );
my @keys = grep { defined $data{$_} } keys %data;
print "Key: $_\n" for @keys;
我还认为我打字太慢,我应该在发布答案之前重新加载页面。顺便说一下,无论是一个值0
or undef
可能是一个很好的处理方法null值,但请确保记住您正在使用的值。在 Perl 中,假值和未定义值不是一回事。澄清:undef
在布尔测试中返回 false,但也是如此0
. If 0
是一个有效值,那么您想要显式测试定义性,而不仅仅是真理。 (我提到它是因为詹姆斯去了0
我走了另一条路,你可能知道也可能不知道这是否重要。)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)