我有两个列表。第一个列表中的元素对应于第二个列表中的元素。我想组合listA中所有具有'name'作为连续标签的元素,并反映listB中的更改。
示例输入:
listA = ['my','name','is','dumbledore',',','albus','dumbledore','.','they','call','me','albus','percival','wulfric','brian','dumbledore','.']
listB = ['x','x','x,'name','x','name','name','x','x','x','x','name','name','name','name','name','x']
预期输出:
listA = ['my','name','is','dumbledore',',','albus_dumbledore','.','they','call','me','albus_percival_wulfric_brian_dumbledore','.']
listB = ['x','x','x','name','x','name','x','x','x','x','name','x']
到目前为止,这就是我所拥有的:
prev_a = None
prev_b = None
i=-1
for a, b in zip(listA, listB):
i += 1
places = 0
if b == 'name':
if prev_b == b:
prev_a = prev_a + '_' + a
del listB[i]
listA[i-1] = prev_a
del listA[i]
prev_a = a
prev_b = b
print(listA)
print(listB)
我得到的输出是:
['my', 'name', 'is', 'dumbledore', ',', 'albus_dumbledore', '.', 'they', 'call', 'me', 'albus_percival', 'percival_brian', 'dumbledore', '.']
['x', 'x', 'x', 'name', 'x', 'name', 'x', 'x', 'x', 'x', 'name', 'name', 'name', 'x']
这是不正确的。如何在不事先知道名称长度的情况下将其概括化以适用于2个单词以上的名称?
答案 0 :(得分:2)
您可以存储名称,直到没有名称,然后将其添加到结果中。
resA = []
resB = []
current = None
for a,b in zip(listA,listB):
if b == 'x':
if current:
resA.append(current)
resB.append('name')
current = None
resA.append(a)
resB.append(b)
else:
current= current + '_'+a if current else a
if current:
resA.append(current)
resB.append('name')
print(resA)
print(resB)
产量:
['my', 'name', 'is', 'dumbledore', ',', 'albus_dumbledore', '.', 'they', 'call', 'me', 'albus_percival_wulfric_brian_dumbledore', '.']
['x', 'x', 'x', 'name', 'x', 'name', 'x', 'x', 'x', 'x', 'name', 'x']