如何根据 Python 中列中字符串的前缀过滤嵌套列表



我的问题:

我想得到错过年龄的名字。对于下一个示例数据:

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

最新更新