Как отфильтровать вложенный список по префиксу строки в столбцах в Python - PullRequest
0 голосов
/ 06 сентября 2018

Моя проблема:

Я хотел бы получить имена, которые пропускают возраст.Для следующих образцов данных:

t = ([Mike, 12], [Alice, 20], [Bob, Missing_1], [Jack, Missing_2])

Вывод должен быть:

Bob
Jack

Что я пробовал?

r=([l for l in t[1] if l='Missing*'])

Это не такт работатьРаботает ли подстановочный знак в Python?

1 Ответ

0 голосов
/ 06 сентября 2018

Это должно работать:

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
...