#python #list #python-3.x #tuples
#python #Список #python-3.x #кортежи
Вопрос:
У меня есть список, содержащий кортежи разных типов, например:
[(0, 1, 'BLANK', ''), (0, 2, 'PERSON', 'Deraj'), (3, 8, 'DOB', 'April 27 , 1834'), (9, 11, 'PERSON', 'David Deraj'), (11, 13, 'LOC', 'Pennsylvania'), (16, 19, 'PERSON', 'Mary Deraj')]
Как мне получить следующий вывод
('Deraj', 'David Deraj')
('Deraj', 'Mary Deraj')
я пытаюсь использовать цикл for:
for i in l:
if i[2] == 'PERSON':
m = list(i[3])
но это не работает.
Комментарии:
1. (x [1] [3], x[3] [3]) и (x [1] [3], x [5] [3]) должны делать..
Ответ №1:
Вероятно, вы можете сделать это следующим образом (если я правильно понимаю, и вы хотите, чтобы первый член кортежа был вторым именем этих людей):
l=[]
for i in l:
if i[2]=='PERSON':
temp=i[3].split()
if len(temp)>1:
l.append((temp[1],i[3]))
Ответ №2:
Предполагая, что первая запись (0, 2, 'PERSON', 'Deraj')
всегда содержит первый нулевой элемент, а второй элемент указывает количество членов семейства, вы можете сделать это в одной строке.
print [ (entry[3].split()[1], entry[3])
for entry in data
if (entry[2] == 'PERSON' and entry[0] > 0) ]