下面給出了我正在使用的示例多列表。現在我需要找到給定值的indices
,如果它出現在列表中的任何位置。例如:對於lis[0][2][2][1][0] which is 'span 1 2'
,我想索引爲[0,2,2,1,0]
。如何查找python多列表中給定值的索引?
lis = [['Root', ['span 1 6'], ['Nucleus', ['span 1 3'], ['Nucleus', ['span 1 2'], ['Nucleus', ['leaf 1'], ['text', "Specific knowledge "]], ['Satellite', ['leaf 2'], ['rel2par Elaboration'], ['text', 'required !_']]], ['Satellite', ['leaf 3'], ['rel2par Elaboration'], ['text', 'The tester is ']]], ['Satellite', ['span 4 6'], ['rel2par Elaboration'], ['Satellite', ['leaf 4'], ['rel2par Attribution'], ['text', 'For instance , the tester is aware!_']], ['Nucleus', ['span 5 6'], ['Nucleus', ['leaf 5'], ['rel2par Contrast'], ['text', 'that a!_']], ['Nucleus', ['leaf 6'], ['rel2par Contrast'], ['text', 'but ']]]]]]
我嘗試了以下(從網絡源修改)。
from copy import copy
def scope2(word, list, indexes = None):
flag = 0
result = []
if not indexes:
indexes = []
for index, item in enumerate(list):
try:
current_index = indexes + [index]
result.append(current_index + [item.index(word)])
except ValueError:
pass
print item
print str(current_index) + ":::::" + str(list.index(item))
for stuff in item:
if type(stuff) == type([]):
flag =1
if flag==1:
indexes.append(index)
result.extend(scope2(word, item, copy(indexes)))
return result
這裏的問題是兄弟姐妹(列表在同一級別)的索引也得到了返回,但並不總是。一些示例輸出如
for 0,2,3,1 it returns 0,2,3,1,0, similarly for lis[0][2][3][4][3][3] it returns 0,2,3,3,4,3,3
等等。什麼可能是可能的問題?
'lis [0] [2] [3] [1]'''''leaf 3']'。 'lis [0] [2] [2] [1] [0]'是'span 1 2''。 – falsetru 2014-09-19 10:28:57
@falsetru抱歉,它只是lis [0] [2] [2] [1] [0]。在問題中編輯 – 2014-09-19 11:00:04