Ho una lista di elenchi in python piena di testi. È come impostare le parole di ogni documento. Quindi per ogni documento ho una lista e poi in lista per tutti i documenti.Come posso contare l'occorrenza di ogni parola nel documento usando Comprensione del dizionario
Tutto l'elenco contiene solo parole univoche. Il mio scopo è contare l'occorrenza di ogni parola nel documento completo. Sono in grado di farlo con successo usando il codice seguente:
for x in texts_list:
for l in x:
if l in term_appearance:
term_appearance[l] += 1
else:
term_appearance[l] = 1
Ma io voglio usare la comprensione dizionario a fare lo stesso. Questa è la prima volta, sto cercando di scrivere la comprensione dizionario e l'utilizzo di post precedenti esistenti in StackOverflow, sono stato in grado di scrivere il seguente:
from collections import defaultdict
term_appearance = defaultdict(int)
{{term_appearance[l] : term_appearance[l] + 1 if l else term_appearance[l] : 1 for l in x} for x in texts_list}
Post precedente di riferimento:
Simple syntax error in Python if else dict comprehension
Come suggerito nel post sopra, ho anche usato il seguente codice:
{{l : term_appearance[l] + 1 if l else 1 for l in x} for x in texts_list}
il codice di cui sopra è riuscita a pr oducing liste vuote, ma alla fine ha gettato la seguente traceback:
[]
[]
[]
[]
Traceback (most recent call last):
File "term_count_fltr.py", line 28, in <module>
{{l : term_appearance[l] + 1 if l else 1 for l in x} for x in texts_list}
File "term_count_fltr.py", line 28, in <setcomp>
{{l : term_appearance[l] + 1 if l else 1 for l in x} for x in texts_list}
TypeError: unhashable type: 'dict'
Qualsiasi aiuto nel migliorare la mia comprensione attuale sarebbe molto apprezzato.
Guardando l'errore di cui sopra, ho anche provato
[{l : term_appearance[l] + 1 if l else 1 for l in x} for x in texts_list]
Questo ha funzionato senza alcun errore, ma l'uscita era solo liste vuote.
Buona fortuna ... Qui è un pensiero, dict predefinito sarà di default a zero, che significa che potrebbe non essere necessario la parte if-else . – nehemiah