首页 > 解决方案 > 如何在保持子列表结构完整的同时从元组列表中去除第二个值?

问题描述

我在列表列表中有一个元组列表。我想从每个元组中去除第二个值,同时保持子列表结构完整。我尝试了一个 for 循环,在其中我提取了第一个值,但这会将子列表的结构折叠成每个单词的单个列表。

我的代码是:

tokenz = [word_tokenize(i) for i in data_file]
tokenz = [l[:2] for l in tokenz]
tuples = [tuple(x) for x in tokenz]
tuples = [list(g) for k, g in groupby(tuples, key=bool) if k]

tuples

现在我的输出是:

[('EU', 'NNP'),
  ('rejects', 'VBZ'),
  ('German', 'JJ'),
  ('call', 'NN'),
  ('to', 'TO'),
  ('boycott', 'VB'),
  ('British', 'JJ'),
  ('lamb', 'NN'),
  ('.', '.')],
 [('Peter', 'NNP'), ('Blackburn', 'NNP')],
 [('BRUSSELS', 'NNP'), ('1996-08-22', 'CD')],

我试图让它看起来像这样:

['EU', 'rejects', 'German', 'call', 'to', 'boycott', 'British', 'lamb', '.'],
['Peter', 'Blackburn'],
['BRUSSELS', '1996-08-22']

标签: pythonlistnested-lists

解决方案


使用嵌套列表推导

tuples = [
     [('EU', 'NNP'),
      ('rejects', 'VBZ'),
      ('German', 'JJ'),
      ('call', 'NN'),
      ('to', 'TO'),
      ('boycott', 'VB'),
      ('British', 'JJ'),
      ('lamb', 'NN'),
      ('.', '.')],
     [('Peter', 'NNP'), ('Blackburn', 'NNP')],
     [('BRUSSELS', 'NNP'), ('1996-08-22', 'CD')]
    ]

result = [[tup[0] for tup in list_of_tuples] for list_of_tuples in tuples]

推荐阅读