我的问题:
我想得到错过年龄的名字。对于下一个样本数据:
t = ([Mike, 12], [Alice, 20], [Bob, Missing_1], [Jack, Missing_2])
输出应该是:
Bob
Jack
我尝试了什么?
r=([l for l in t[1] if l='Missing*'])
它没有成功。通配符是否适用于Python?
这应该工作:
print([e for e, age in t if isinstance(age, str) and 'missing' in age.lower()])
产量
['Bob', 'Jack']
如果输出必须是字符串,则可以将其更改为:
print(' '.join([e for e, age in t if isinstance(age, str) and 'missing' in age.lower()]))
产量
Bob Jack
'missing' in age.lower()
检查'missing'
是字符串age
的一部分,之前我们检查age
确实是isinstance(age, str)
的字符串。如果缺失的值总是字符串,则只能使用isinstance(age, str)
。请注意,此解决方案假定缺少的值是包含缺少单词的字符串。
另一种更符合您尝试的解决方案的是startswith函数,来自文档:
如果字符串以前缀开头,则返回True,否则返回False
print(' '.join([e for e, age in t if isinstance(age, str) and age.startswith('Missing')])
产量
Bob Jack