python - 将列表的列表转换为元组列表的列表

标签 python python-3.x list nested nested-lists

我有一个列表,列表包括:

> [['Di/in/QUE', 'mana/wh/QUE', 'lokasi/nn/INTENT', 'laboratorium/nnp/LOC', 'dasar/nnp/LOC', '?/?/O'], ['Di/in/QUE', 'mana/wh/QUE', 'lokasi/nn/INTENT', 'laboratorium/nnp/LOC', 'dasar/nnp/LOC', '2/nnp/LOC', '?/?/O'], ['Di/in/QUE', 'mana/wh/QUE', 'lokasi/nn/INTENT', 'laboratorium/nnp/LOC', 'lanjut/nnp/LOC', '?/?/O']]

我想把它转换成元组列表的列表,像这样:

> [[('Di','in','QUE'), ('mana','wh','QUE'), ('lokasi','nn','INTENT'), ('laboratorium','nnp','LOC'), ('dasar','nnp','LOC'), ('?','?','O')], [('Di','in','QUE'), ('mana','wh','QUE'), ('lokasi','nn','INTENT'), ('laboratorium','nnp','LOC'), ('dasar','nnp','LOC'), ('2','nnp','LOC'), ('?','?','O')], [('Di','in','QUE'), ('mana','wh','QUE'), ('lokasi','nn','INTENT'), ('laboratorium','nnp','LOC'), ('lanjut','nnp','LOC'), ('?','?','O')]]

我从一个文本文件中读取数据,所以这是我的代码:

with open("corpusposner.txt", "r") as f: 
    vallist = [line.split() for line in f]
f.close()
standard_form_tokens = []
for sentence in vallist:
    for satupsg in sentence:
        anotasi = satupsg.split('/')
        kata, tag, ner = anotasi[0], anotasi[1], anotasi[2]

        standard_form_tokens.append((kata, tag.lower(), ner))

当我打印 standard_form_tokens 时,它只返回一个大的元组列表

[('Di', 'in', 'QUE'), ('mana', 'wh', 'QUE'), ('lokasi', 'nn', 'INTENT'), ('laboratorium', 'nnp', 'LOC'), ('dasar', 'nnp', 'LOC'), ('?', '?', 'O'), ('Di', 'in', 'QUE'), ('mana', 'wh', 'QUE'), ('lokasi', 'nn', 'INTENT'), ('laboratorium', 'nnp', 'LOC'), ('dasar', 'nnp', 'LOC'), ('2', 'nnp', 'LOC'), ('?', '?', 'O'), ('Di', 'in', 'QUE'), ('mana', 'wh', 'QUE'), ('lokasi', 'nn', 'INTENT'), ('laboratorium', 'nnp', 'LOC'), ('lanjut', 'nnp', 'LOC'), ('?', '?', 'O')]

我试图将 standard_form_tokens 附加到新列表中,但它不起作用。有什么想法吗?

最佳答案

tuplesplit 和列表理解结合使用:

[[tuple(i.split('/')) for i in j] for j in arr]

输出:

[[('Di', 'in', 'QUE'),
  ('mana', 'wh', 'QUE'),
  ('lokasi', 'nn', 'INTENT'),
  ('laboratorium', 'nnp', 'LOC'),
  ('dasar', 'nnp', 'LOC'),
  ('?', '?', 'O')],
 [('Di', 'in', 'QUE'),
  ('mana', 'wh', 'QUE'),
  ('lokasi', 'nn', 'INTENT'),
  ('laboratorium', 'nnp', 'LOC'),
  ('dasar', 'nnp', 'LOC'),
  ('2', 'nnp', 'LOC'),
  ('?', '?', 'O')],
 [('Di', 'in', 'QUE'),
  ('mana', 'wh', 'QUE'),
  ('lokasi', 'nn', 'INTENT'),
  ('laboratorium', 'nnp', 'LOC'),
  ('lanjut', 'nnp', 'LOC'),
  ('?', '?', 'O')]]

关于python - 将列表的列表转换为元组列表的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51277552/

相关文章:

r - 在 R 中的数据框列表中更改列名称的子集

python - VIM,将 .pyp 识别为 python 文件

Python3安装成功,但终端打不开

python - 在 python 3 中展平多维数组

python-3.x - 使用 input() 对关闭的文件进行 I/O 操作

Python,如何替换列表中元素的多个部分(在列表中)

css - 显示 : inline not working

python - 从多个列表创建唯一的对象列表

python - 如何更新 tkinter 中 matplotlib 图中的 x 限制

python - Google App Engine 中不支持的 python 库