我正在寻找在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或undef.看另一种方式,我想要的是简洁的perl等同于list comprehension with conditional.
解决方法
我想你想要
grep
:
#!/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或undef可以是处理空值的好方法,但请确保记住您使用的是什么. Perl中的虚假值和未定义的值是不一样的.要澄清:undef在布尔测试中返回false,但是也是0.如果0是一个有效值,那么你要显式测试定义,而不是简单的真理. (我提到,因为詹姆斯去了0,我走了另一个方式,你可能会或可能不知道是否重要.)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。