Это связано с How to append to the end of an empty list?, но у меня пока нет достаточной репутации, чтобы комментировать там, поэтому я разместил здесь новый вопрос.Добавление новых значений в пустые вложенные списки
Мне нужно добавить термины в пустой список списков. Я начинаю с:
Talks[eachFilename][TermVectors]=
[['paragraph','1','text'],
['paragraph','2','text'],
['paragraph','3','text']]
Я хочу закончить с
Talks[eachFilename][SomeTermsRemoved]=
[['paragraph','text'],
['paragraph','2'],
['paragraph']]
Talks[eachFilename][SomeTermsRemoved]
начинается пустой. Я не могу определить, что я хочу:
Talks[eachFilename][SomeTermsRemoved][0][0]='paragraph'
Talks[eachFilename][SomeTermsRemoved][0][1]='text'
Talks[eachFilename][SomeTermsRemoved][1][0]='paragraph'
и т.д ... (IndexError: индекс списка из диапазона). Если я заставляю заполнять строку, а затем пытаюсь ее изменить, я получаю строки неизменной.
Итак, как же я определяю, что я хочу Talks[eachFilename][SomeTermsRemoved][0]
быть ['paragraph','text']
и Talks[eachFilename][SomeTermsRemoved][1]
быть ['paragraph','2']
и т.д.?
.append
работает, но генерирует только один длинный столбец, а не набор списков.
Чтобы быть более точным, у меня есть несколько списков, которые инициализируются внутри Словаря
Talks = {}
Talks[eachFilename]= {}
Talks[eachFilename]['StartingText']=[]
Talks[eachFilename]['TermVectors']=[]
Talks[eachFilename]['TermVectorsNoStops']=[]
eachFilename
получает заселенный из списка текстовых файлов, например:
Talks[eachFilename]=['filename1','filename2']
StartingText
имеет несколько длинные строки текста (отдельные абзацы)
Talks[filename1][StartingText]=['This is paragraph one','paragraph two']
TermVectors населенны пакетом NLTK со списком терминов, по-прежнему, сгруппированным в оригинальных пунктах:
Talks[filename1][TermVectors]=
[['This','is','paragraph','one'],
['paragraph','two']]
Я хочу, чтобы в дальнейшем манипулировать TermVectors
, но сохранить первоначальную структуру списка пункта. Это создает список с 1 сроком на линию:
for eachFilename in Talks:
for eachTerm in range(0, len(Talks[eachFilename]['TermVectors'])):
for term in Talks[eachFilename]['TermVectors'][ eachTerm ]:
if unicode(term) not in stop_words:
Talks[eachFilename]['TermVectorsNoStops'].append(term)
Результат (я потеряю свою структуру абзаца):
Talks[filename1][TermVectorsNoStops]=
[['This'],
['is'],
['paragraph'],
['one'],
['paragraph'],
['two']]
Непонятно, в чем вопрос. Как в вашем коде определяется 'Talks [eachFilename] [SomeTermsRemoved]'? –