我想为列表列表中的每个元组添加唯一值。该列表如下所示:
[[('While', 'IN', 'Entity'),
('applying', 'VBG', 'O'),
('opacity', 'NN', 'Entity'),
('to', 'TO', 'Entity'),
('a', 'DT', 'Entity'),
('form', 'NN', 'Entity'),
('should', 'MD', 'O'),
('we', 'PRP', 'O'),
('use', 'VB', 'Entity'),
('a', 'DT', 'Entity'),
('decimal', 'NN', 'Entity'),
('or', 'CC', 'Entity'),
('double', 'JJ', 'Entity'),
('value', 'NN', 'Entity'),
('?', '.', 'O')],
[('I', 'PRP', 'O'),
('want', 'VBP', 'O'),
('to', 'TO', 'Entity'),
('use', 'VB', 'Entity'),
('a', 'DT', 'Entity'),
('trackbar', 'NN', 'O'),
('to', 'TO', 'Entity'),
('change', 'VB', 'Entity'),
('a', 'DT', 'Entity'),
('forms', 'JJ', 'Entity'),
('opacity', 'NN', 'Entity'),
('.', '.', 'O')]]
我试图得到以下输出:
c = [(1, 'While', 'IN', 'Entity'),
(1, 'applying', 'VBG', 'O'),
(1, 'opacity', 'NN', 'Entity'),
(1, 'to', 'TO', 'Entity'),
(1, 'a', 'DT', 'Entity'),
(1, 'form', 'NN', 'Entity'),
(1, 'should', 'MD', 'O'),
(1, 'we', 'PRP', 'O'),
(1, 'use', 'VB', 'Entity'),
(1, 'a', 'DT', 'Entity'),
(1, 'decimal', 'NN', 'Entity'),
(1, 'or', 'CC', 'Entity'),
(1, 'double', 'JJ', 'Entity'),
(1, 'value', 'NN', 'Entity'),
(1, '?', '.', 'O'),
(2, 'I', 'PRP', 'O'),
(2, 'want', 'VBP', 'O'),
(2, 'to', 'TO', 'Entity'),
(2, 'use', 'VB', 'Entity'),
(2, 'a', 'DT', 'Entity'),
(2, 'trackbar', 'NN', 'O'),
(2, 'to', 'TO', 'Entity'),
(2, 'change', 'VB', 'Entity'),
(2, 'a', 'DT', 'Entity'),
(2, 'forms', 'JJ', 'Entity'),
(2, 'opacity', 'NN', 'Entity'),
(2, '.', '.', 'O')]
每个列表都应该发生数字增量(对于属于列表的元组,数字应该保持相同),并且应该最终输出为上面的元组列表。
通过这样做,我将能够实现以下目标:
pd.DataFrame.from_records(c, columns = ['a','b','c','d'])
a b c d
0 1 While IN Entity
1 1 applying VBG O
2 1 opacity NN Entity
3 1 to TO Entity
4 1 a DT Entity
5 1 form NN Entity
6 1 should MD O
7 1 we PRP O
8 1 use VB Entity
9 1 a DT Entity
10 1 decimal NN Entity
11 1 or CC Entity
12 1 double JJ Entity
13 1 value NN Entity
14 1 ? . O
15 2 I PRP O
16 2 want VBP O
17 2 to TO Entity
18 2 use VB Entity
19 2 a DT Entity
20 2 trackbar NN O
21 2 to TO Entity
22 2 change VB Entity
23 2 a DT Entity
24 2 forms JJ Entity
25 2 opacity NN Entity
26 2 . . O
我正在尝试使用list-zip函数:
list(zip(range(len(a)),a))
给了我以下结果:
[(0,
[('While', 'IN', 'Entity'),
('applying', 'VBG', 'O'),
('opacity', 'NN', 'Entity'),
('to', 'TO', 'Entity'),
('a', 'DT', 'Entity'),
('form', 'NN', 'Entity'),
('should', 'MD', 'O'),
('we', 'PRP', 'O'),
('use', 'VB', 'Entity'),
('a', 'DT', 'Entity'),
('decimal', 'NN', 'Entity'),
('or', 'CC', 'Entity'),
('double', 'JJ', 'Entity'),
('value', 'NN', 'Entity'),
('?', '.', 'O')]),
(1,
[('I', 'PRP', 'O'),
('want', 'VBP', 'O'),
('to', 'TO', 'Entity'),
('use', 'VB', 'Entity'),
('a', 'DT', 'Entity'),
('trackbar', 'NN', 'O'),
('to', 'TO', 'Entity'),
('change', 'VB', 'Entity'),
('a', 'DT', 'Entity'),
('forms', 'JJ', 'Entity'),
('opacity', 'NN', 'Entity'),
('.', '.', 'O')])]
但无法继续采用这种方法。
答案 0 :(得分:1)
使用for循环和 enumerate method ,您可以迭代元组列表并获得所需的输出。
<强>实施例强>
a = [[('While', 'IN', 'Entity'),
('applying', 'VBG', 'O'),
('opacity', 'NN', 'Entity'),
('to', 'TO', 'Entity'),
('a', 'DT', 'Entity'),
('form', 'NN', 'Entity'),
('should', 'MD', 'O'),
('we', 'PRP', 'O'),
('use', 'VB', 'Entity'),
('a', 'DT', 'Entity'),
('decimal', 'NN', 'Entity'),
('or', 'CC', 'Entity'),
('double', 'JJ', 'Entity'),
('value', 'NN', 'Entity'),
('?', '.', 'O')],
[('I', 'PRP', 'O'),
('want', 'VBP', 'O'),
('to', 'TO', 'Entity'),
('use', 'VB', 'Entity'),
('a', 'DT', 'Entity'),
('trackbar', 'NN', 'O'),
('to', 'TO', 'Entity'),
('change', 'VB', 'Entity'),
('a', 'DT', 'Entity'),
('forms', 'JJ', 'Entity'),
('opacity', 'NN', 'Entity'),
('.', '.', 'O')]]
res = []
for i, v in enumerate(a):
for j in v:
res.append(tuple([i+1] + list(j)))
print res
<强>输出:强>
[(1, 'While', 'IN', 'Entity'), (1, 'applying', 'VBG', 'O'), (1, 'opacity', 'NN', 'Entity'), (1, 'to', 'TO', 'Entity'), (1, 'a', 'DT', 'Entity'), (1, 'form', 'NN', 'Entity'), (1, 'should', 'MD', 'O'), (1, 'we', 'PRP', 'O'), (1, 'use', 'VB', 'Entity'), (1, 'a', 'DT', 'Entity'), (1, 'decimal', 'NN', 'Entity'), (1, 'or', 'CC', 'Entity'), (1, 'double', 'JJ', 'Entity'), (1, 'value', 'NN', 'Entity'), (1, '?', '.', 'O'), (2, 'I', 'PRP', 'O'), (2, 'want', 'VBP', 'O'), (2, 'to', 'TO', 'Entity'), (2, 'use', 'VB', 'Entity'), (2, 'a', 'DT', 'Entity'), (2, 'trackbar', 'NN', 'O'), (2, 'to', 'TO', 'Entity'), (2, 'change', 'VB', 'Entity'), (2, 'a', 'DT', 'Entity'), (2, 'forms', 'JJ', 'Entity'), (2, 'opacity', 'NN', 'Entity'), (2, '.', '.', 'O')]
答案 1 :(得分:1)
首先,你不能更改元组,你只能创建新元素。
您应该遍历现有列表,创建带有索引的新元组,并将旧数据附加到新列表中。
result = []
for index, inner_list in enumerate(lst, 1):
for inner_tuple in inner_list:
result.append((index, *inner_tuple))
enumerate使您能够迭代序列,并同时拥有索引。可选的“start”arg将有助于简化逻辑。
((index, *inner_tuple))
使用index
创建新元组,并展开inner_tuple
的所有内容。这只适用于python 3,tho。
答案 2 :(得分:1)
您可以在列表推导中使用双for
循环执行此操作,使用enumerate
生成索引。
data = [
[
('While', 'IN', 'Entity'),
('applying', 'VBG', 'O'),
('opacity', 'NN', 'Entity'),
('to', 'TO', 'Entity'),
('a', 'DT', 'Entity'),
('form', 'NN', 'Entity'),
('should', 'MD', 'O'),
('we', 'PRP', 'O'),
('use', 'VB', 'Entity'),
('a', 'DT', 'Entity'),
('decimal', 'NN', 'Entity'),
('or', 'CC', 'Entity'),
('double', 'JJ', 'Entity'),
('value', 'NN', 'Entity'),
('?', '.', 'O')
],
[
('I', 'PRP', 'O'),
('want', 'VBP', 'O'),
('to', 'TO', 'Entity'),
('use', 'VB', 'Entity'),
('a', 'DT', 'Entity'),
('trackbar', 'NN', 'O'),
('to', 'TO', 'Entity'),
('change', 'VB', 'Entity'),
('a', 'DT', 'Entity'),
('forms', 'JJ', 'Entity'),
('opacity', 'NN', 'Entity'),
('.', '.', 'O')
]
]
newdata = [(i,) + tup for i, lst in enumerate(data, 1) for tup in lst]
for row in newdata:
print(row)
<强>输出强>
(1, 'While', 'IN', 'Entity')
(1, 'applying', 'VBG', 'O')
(1, 'opacity', 'NN', 'Entity')
(1, 'to', 'TO', 'Entity')
(1, 'a', 'DT', 'Entity')
(1, 'form', 'NN', 'Entity')
(1, 'should', 'MD', 'O')
(1, 'we', 'PRP', 'O')
(1, 'use', 'VB', 'Entity')
(1, 'a', 'DT', 'Entity')
(1, 'decimal', 'NN', 'Entity')
(1, 'or', 'CC', 'Entity')
(1, 'double', 'JJ', 'Entity')
(1, 'value', 'NN', 'Entity')
(1, '?', '.', 'O')
(2, 'I', 'PRP', 'O')
(2, 'want', 'VBP', 'O')
(2, 'to', 'TO', 'Entity')
(2, 'use', 'VB', 'Entity')
(2, 'a', 'DT', 'Entity')
(2, 'trackbar', 'NN', 'O')
(2, 'to', 'TO', 'Entity')
(2, 'change', 'VB', 'Entity')
(2, 'a', 'DT', 'Entity')
(2, 'forms', 'JJ', 'Entity')
(2, 'opacity', 'NN', 'Entity')
(2, '.', '.', 'O')