Это должно работать:
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)
. Обратите внимание, что в этом решении предполагается, что отсутствующие значения являются строками, содержащими слово отсутствует.
Альтернатива, более соответствующая вашей попытке решения, - это функция запускается с из документации:
Вернуть True, если строка начинается с префикса, в противном случае вернуть False
print(' '.join([e for e, age in t if isinstance(age, str) and age.startswith('Missing')])
выход
Bob Jack