我的问题:
我想得到错过年龄的名字。对于下一个示例数据:
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)
。请注意,此解决方案假定缺失值是包含单词 missing 的字符串。
另一种更符合您尝试的解决方案的替代方法是 startswith 函数,来自文档:
如果字符串以前缀开头,则返回 True,否则返回 False
print(' '.join([e for e, age in t if isinstance(age, str) and age.startswith('Missing')])
输出
Bob Jack