Ceci est lié à How to append to the end of an empty list?, mais je n'ai pas encore assez de réputation pour y faire des commentaires, alors j'ai posté une nouvelle question ici.Ajout de nouvelles valeurs pour vider des listes imbriquées
Je dois ajouter des termes à une liste de listes vide. Je commence par:
Talks[eachFilename][TermVectors]=
[['paragraph','1','text'],
['paragraph','2','text'],
['paragraph','3','text']]
Je veux terminer par
Talks[eachFilename][SomeTermsRemoved]=
[['paragraph','text'],
['paragraph','2'],
['paragraph']]
Talks[eachFilename][SomeTermsRemoved]
commence vides. Je ne peux pas préciser que je veux:
Talks[eachFilename][SomeTermsRemoved][0][0]='paragraph'
Talks[eachFilename][SomeTermsRemoved][0][1]='text'
Talks[eachFilename][SomeTermsRemoved][1][0]='paragraph'
etc ... (IndexError: liste des index hors de portée). Si je force le remplissage de la chaîne puis que j'essaie de la changer, j'obtiens une chaîne qui est une erreur immuable.
Alors, comment puis-je préciser que je veux Talks[eachFilename][SomeTermsRemoved][0]
d'être ['paragraph','text']
et Talks[eachFilename][SomeTermsRemoved][1]
d'être ['paragraph','2']
etc?
.append
fonctionne, mais ne génère qu'une seule longue colonne, pas un ensemble de listes.
Pour être plus précis, j'ai un certain nombre de listes qui sont initialisés dans un dict
Talks = {}
Talks[eachFilename]= {}
Talks[eachFilename]['StartingText']=[]
Talks[eachFilename]['TermVectors']=[]
Talks[eachFilename]['TermVectorsNoStops']=[]
eachFilename
obtient peuplé à partir d'une liste de fichiers texte, par exemple:
Talks[eachFilename]=['filename1','filename2']
StartingText
a plusieurs grandes lignes de texte (paragraphes individuels)
Talks[filename1][StartingText]=['This is paragraph one','paragraph two']
TermVectors sont peuplées par le paquet NLTK avec une liste de termes, toujours regroupés dans les paragraphes d'origine:
Talks[filename1][TermVectors]=
[['This','is','paragraph','one'],
['paragraph','two']]
Je veux manipuler davantage l'TermVectors
, mais garder la structure de la liste des paragraphes d'origine. Cela crée une liste avec 1 terme par ligne:
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)
Résultat (je perds ma structure de paragraphe):
Talks[filename1][TermVectorsNoStops]=
[['This'],
['is'],
['paragraph'],
['one'],
['paragraph'],
['two']]
On ne sait pas très bien quelle est la question ici. Comment 'Talks [eachFilename] [SomeTermsRemoved]' est-il défini dans votre code? –