Как получить доступ к элементу Tuple в списке кортежей - PullRequest
0 голосов
/ 07 апреля 2019

Я новичок в Python и делаю некоторые руки.

У меня есть список кортежей (у каждого кортежа есть 3 поднабора), как показано ниже:

ABC = [   (('The', 'AT'), ('Fulton', 'NP-TL'), ('County', 'NN-TL')),   

(('Fulton', 'NP-TL'), ('County', 'NN-TL'), ('Grand', 'JJ-TL')), 

(('County', 'NN-TL'), ('Grand', 'JJ-TL'), ('Jury', 'NN-TL')), 

(('Grand', 'JJ-TL'), ('Jury', 'NN-TL'), ('said', 'VBD')), 

(('Jury', 'NN-TL'), ('said', 'VBD'), ('Friday', 'NR'))   ]

Мне нужно извлечь второе значение поднабора в каждом кортеже, то есть 3 значения, и получить их в кортеже, который будет добавлен в список.

Пожалуйста, помогите, как получить это.

Ожидаемый результат:

Мне нужен новый список, полученный из него:

 ABC_subset = [('AT','NP-TL', 'NN-TL'),

('NP-TL','NN-TL', 'JJ-TL'),

('NN-TL','JJ-TL', 'NN-TL'),

('JJ-TL','NN-TL', 'VBD'),

('NN-TL','VBD', 'NR')] 

Я пытаюсь что-то вроде этого:

 ABC_subset = [(t[1],u[1],v[1]) for tup in ABC for t,u,v in tup]

Но он не дает ожидаемого ответа.

Ответы [ 3 ]

0 голосов
/ 07 апреля 2019

Допустим, ваш первый список - orig, а второй требуемый список - newlist.Это можно сделать очень просто с помощью списочных представлений:

newlist = [tuple(j[1] for j in i) for i in orig]

По сути, итерация по каждой строке i из orig и извлечение второго элемента из каждого кортежа j в этой строке.

0 голосов
/ 07 апреля 2019

Используйте понимание списка, например:

output = [tuple(j[1] for j in i) for i in inputlist]

Вам нужно будет преобразовать второе выражение в кортеж, иначе оно выведет объект генератора

0 голосов
/ 07 апреля 2019
[(x[1] for x in y) for y in your_list]
...