遍历带索引的列表列表

时间:2017-11-24 14:39:47

标签: python list loops

我有一个Python列表,如下所示:

onlyText3 = [['Here', 'is', 'some', 'text'], ['Here', 'is', 'some', 'more', 'text']]

我需要遍历该列表的每个元素

  1. 检查单词是否包含在词典中
  2. 如果单词不在字典中,如果是复合词,则将其拆分+将结果单词添加到列表中
  3. 用字典提供的第一个建议替换未知单词(splitter.split('word')返回一个列表)
  4. 我正在使用Pyenchant和word-compound-splitter。

    这是我的代码:

    import enchant
    import splitter
    
    dictionary = enchant.dict("en_US")
    
    for a in range(len(onlyText3)-1):
         for b in range(len(onlyText3[a])-1):
             if dictionary.check(onlyText3[a][b]):
                 pass
             elif splitter.split(onlyText3[a][b]):
                 for c in range(len(splitter.split(onlyText3[a][b]))-1):
                     onlyText3[a].insert(b+c, splitter.split(onlyText3[a][b])[c])
             else:
                 if dictionary.suggest(onlyText3[a][b]): 
                     onlyText3[a][b] = dictionary.suggest(onlyText3[a][b])[0]
    

    但是,这会产生索引错误:

    onlyText3[a].insert(b+c, splitter1.split(onlyText3[a][b])[c])
    IndexError: list index out of range
    

    我有没有想过的事情?有没有更简单的方法来做到这一点? 我想不出更好的方法,因为我确实需要使用索引访问每个元素,因为我需要索引以插入分割复合词所产生的单词。

1 个答案:

答案 0 :(得分:0)

insert不会自动为您扩展列表。尝试在断开的行之前执行onlyText3[a].extend([None] * (b + c - len(onlyText3[a])))