Dictionary comprehension : TypeError: 'builtin_function_or_method' object is not iterable
Dictionary comprehension : TypeError: 'builtin_function_or_method' object is not iterable
我有以下错误:
Traceback (most recent call last):
"CSV_dico.py", line 65, in
= {k: [[elt.lower() for elt in v if elt.isalnum() if elt not in stopWords]for k,v in d_lemma.items]}
TypeError: 'builtin_function_or_method' object is not iterable
这是代码 - 我正在尝试删除停用词,从字典中的值和小写值中删除标点符号:
import nltk
from nltk import tokenize
from nltk.tokenize import sent_tokenize, word_tokenize
from nltk.corpus import stopwords
d_filtered_Words ={}
stopWords = set(stopwords.words('french'))
d_filtered_Words = {k: [[elt.lower() for elt in v if elt.isalnum() if elt not in stopWords]for k,v in d_lemma.items]}
print(d_filtered_Words)
输入
{'4721': ['me', 'piquer', 'au', 'bureau', ',', 'cela', 'être', 'à', 'envisager', '(', 'avec', 'le', 'DMI1', ')', '.', 'ce', 'être', 'pas', 'quelque', 'chose', 'que', 'je', 'faire', 'car', 'je', 'ne', 'me', 'piquer', 'pas', 'dans', 'le', 'journée', 'mais', 'je', 'penser', 'que', 'ce', 'être', 'quelque', 'chose', 'qui', 'pouvoir', 'très', 'bien', 'se', 'transporter', 'dans', 'un', 'trousse', 'au', 'toilette', 'comme', 'un', 'femme', 'mettre', 'tout', 'son', 'nécessaire', 'hygiénique', 'dans', 'un', 'trousse', 'quand', 'elle', 'se', 'rendre', 'au', 'toilette', '.', 'ce', 'être', 'sympa', ',', 'ce', 'être', 'discret', '.'], '4722': ['"', 'ce', 'être', 'le', 'côté', 'discrétion', '.', 'autant', 'je', 'parler', 'très', 'facilement', 'de', 'mon', 'maladie', 'mais', 'le', 'côté', '"', '"', '"', '"', 'je', 'me', 'soigner', '"', '"', '"', '"', ',', 'je', 'aimer', 'bien', 'que', 'cela', 'rester', 'discret', '.', 'ce', 'être', 'pour', 'cela', 'que', 'je', 'aimer', 'bien', '.', '"'], '4723': ['mon', 'fille', ',', 'quand', 'elle', 'revenir', 'à', 'le', 'maison', 'ne', 'vouloir', 'pas', 'que', 'le', 'gens', 'autour', 'savoir', 'qu’elle', 'être', 'mal', 'en', 'point', '.', 'elle', 'ne', 'vouloir', 'pas', 'd’infirmier', '(', 'e', ')', 'pour', 'faire', 'son', 'piqûre', ',', 'que', 'le', 'gens', 'ne', 'savoir', 'pas', '.', 'elle', 'me', 'demander', 'de', 'lui', 'faire', 'le', 'piqûre', 'mais', 'je', 'n’aime', 'pas', 'voir', 'ce', 'aiguille', '.', 'avec', 'cela', ',', 'c’est', 'parfait', ',', 'je', 'n’ai', 'pas', 'l’impression', 'de', 'lui', 'faire', 'le', 'piqûre', '.', 'je', 'n’ai', 'même', 'pas', 'à', 'pincer', 'le', 'peau', ',', 'je', 'poser', 'sur', 'le', 'ventre', 'et', 'cela', 'se', 'faire', 'tout', 'seul', '.'], '5433': ['moins', 'cher', '...', '@card@', '%', 'de', 'moins', '...', "C'", 'être', 'quand', 'même', 'moins', 'qualitatif', 'que', 'un', 'seau', '!']}
这里有多个问题。
首先,你得到的错误:
>>> d = {'a':'1'}
>>> d.items
<built-in method items of dict object at ...>
注意d.items
(没有括号)是一个函数,函数是不可迭代的:
>>> list(d.items)
Traceback (most recent call last):
...
TypeError: 'builtin_function_or_method' object is not iterable
但是 d.items()
(带括号)是一个 dict_items
对象:
>>> d.items()
dict_items([('a', '1')])
这是可迭代的(这意味着您可以对其调用 iter
):
>>> list(d.items())
[('a', '1')]
其次,你的听写理解:
>>> {k: [[elt.lower() for elt in v if elt.isalnum() if elt not in stopWords]for k,v in d_lemma.items()]}
Traceback (most recent call last):
...
NameError: name 'k' is not defined
k
从何而来?这是来自 d_lemma.items()
的密钥(注意方括号位置):
>>> {k: [... for k,v in d_lemma.items()]}
是不正确的,因为 k
没有超出列表理解范围,而:
>>> {k: [...] for k,v in d_lemma.items()}
正确。
三、双if
可以是if ... and ...
>>> {k: [elt.lower() for elt in v if elt.isalnum() and elt not in stopWords] for k,v in d_lemma.items()}
{'4721': ['piquer', 'bureau', 'cela', 'être', 'envisager', 'dmi1', 'être', 'quelque', 'chose', 'faire', 'car', 'piquer', 'journée', 'penser', 'être', 'quelque', 'chose', 'pouvoir', 'très', 'bien', 'transporter', 'trousse', 'toilette', 'comme', 'femme', 'mettre', 'tout', 'nécessaire', 'hygiénique', 'trousse', 'quand', 'rendre', 'toilette', 'être', 'sympa', 'être', 'discret'], '4722': ['être', 'côté', 'discrétion', 'autant', 'parler', 'très', 'facilement', 'maladie', 'côté', 'soigner', 'aimer', 'bien', 'cela', 'rester', 'discret', 'être', 'cela', 'aimer', 'bien'], '4723': ['fille', 'quand', 'revenir', 'maison', 'vouloir', 'gens', 'autour', 'savoir', 'être', 'mal', 'point', 'vouloir', 'e', 'faire', 'piqûre', 'gens', 'savoir', 'demander', 'faire', 'piqûre', 'voir', 'aiguille', 'cela', 'parfait', 'faire', 'piqûre', 'pincer', 'peau', 'poser', 'ventre', 'cela', 'faire', 'tout', 'seul'], '5433': ['moins', 'cher', 'moins', 'être', 'quand', 'moins', 'qualitatif', 'seau']}
第四,坚持PEP8:stopWords
应该是stop_words
,d_filtered_Words
应该是d_filtered_words
(这是真的重要)。
我有以下错误:
Traceback (most recent call last):
"CSV_dico.py", line 65, in
= {k: [[elt.lower() for elt in v if elt.isalnum() if elt not in stopWords]for k,v in d_lemma.items]}
TypeError: 'builtin_function_or_method' object is not iterable
这是代码 - 我正在尝试删除停用词,从字典中的值和小写值中删除标点符号:
import nltk
from nltk import tokenize
from nltk.tokenize import sent_tokenize, word_tokenize
from nltk.corpus import stopwords
d_filtered_Words ={}
stopWords = set(stopwords.words('french'))
d_filtered_Words = {k: [[elt.lower() for elt in v if elt.isalnum() if elt not in stopWords]for k,v in d_lemma.items]}
print(d_filtered_Words)
输入
{'4721': ['me', 'piquer', 'au', 'bureau', ',', 'cela', 'être', 'à', 'envisager', '(', 'avec', 'le', 'DMI1', ')', '.', 'ce', 'être', 'pas', 'quelque', 'chose', 'que', 'je', 'faire', 'car', 'je', 'ne', 'me', 'piquer', 'pas', 'dans', 'le', 'journée', 'mais', 'je', 'penser', 'que', 'ce', 'être', 'quelque', 'chose', 'qui', 'pouvoir', 'très', 'bien', 'se', 'transporter', 'dans', 'un', 'trousse', 'au', 'toilette', 'comme', 'un', 'femme', 'mettre', 'tout', 'son', 'nécessaire', 'hygiénique', 'dans', 'un', 'trousse', 'quand', 'elle', 'se', 'rendre', 'au', 'toilette', '.', 'ce', 'être', 'sympa', ',', 'ce', 'être', 'discret', '.'], '4722': ['"', 'ce', 'être', 'le', 'côté', 'discrétion', '.', 'autant', 'je', 'parler', 'très', 'facilement', 'de', 'mon', 'maladie', 'mais', 'le', 'côté', '"', '"', '"', '"', 'je', 'me', 'soigner', '"', '"', '"', '"', ',', 'je', 'aimer', 'bien', 'que', 'cela', 'rester', 'discret', '.', 'ce', 'être', 'pour', 'cela', 'que', 'je', 'aimer', 'bien', '.', '"'], '4723': ['mon', 'fille', ',', 'quand', 'elle', 'revenir', 'à', 'le', 'maison', 'ne', 'vouloir', 'pas', 'que', 'le', 'gens', 'autour', 'savoir', 'qu’elle', 'être', 'mal', 'en', 'point', '.', 'elle', 'ne', 'vouloir', 'pas', 'd’infirmier', '(', 'e', ')', 'pour', 'faire', 'son', 'piqûre', ',', 'que', 'le', 'gens', 'ne', 'savoir', 'pas', '.', 'elle', 'me', 'demander', 'de', 'lui', 'faire', 'le', 'piqûre', 'mais', 'je', 'n’aime', 'pas', 'voir', 'ce', 'aiguille', '.', 'avec', 'cela', ',', 'c’est', 'parfait', ',', 'je', 'n’ai', 'pas', 'l’impression', 'de', 'lui', 'faire', 'le', 'piqûre', '.', 'je', 'n’ai', 'même', 'pas', 'à', 'pincer', 'le', 'peau', ',', 'je', 'poser', 'sur', 'le', 'ventre', 'et', 'cela', 'se', 'faire', 'tout', 'seul', '.'], '5433': ['moins', 'cher', '...', '@card@', '%', 'de', 'moins', '...', "C'", 'être', 'quand', 'même', 'moins', 'qualitatif', 'que', 'un', 'seau', '!']}
这里有多个问题。
首先,你得到的错误:
>>> d = {'a':'1'}
>>> d.items
<built-in method items of dict object at ...>
注意d.items
(没有括号)是一个函数,函数是不可迭代的:
>>> list(d.items)
Traceback (most recent call last):
...
TypeError: 'builtin_function_or_method' object is not iterable
但是 d.items()
(带括号)是一个 dict_items
对象:
>>> d.items()
dict_items([('a', '1')])
这是可迭代的(这意味着您可以对其调用 iter
):
>>> list(d.items())
[('a', '1')]
其次,你的听写理解:
>>> {k: [[elt.lower() for elt in v if elt.isalnum() if elt not in stopWords]for k,v in d_lemma.items()]}
Traceback (most recent call last):
...
NameError: name 'k' is not defined
k
从何而来?这是来自 d_lemma.items()
的密钥(注意方括号位置):
>>> {k: [... for k,v in d_lemma.items()]}
是不正确的,因为 k
没有超出列表理解范围,而:
>>> {k: [...] for k,v in d_lemma.items()}
正确。
三、双if
可以是if ... and ...
>>> {k: [elt.lower() for elt in v if elt.isalnum() and elt not in stopWords] for k,v in d_lemma.items()}
{'4721': ['piquer', 'bureau', 'cela', 'être', 'envisager', 'dmi1', 'être', 'quelque', 'chose', 'faire', 'car', 'piquer', 'journée', 'penser', 'être', 'quelque', 'chose', 'pouvoir', 'très', 'bien', 'transporter', 'trousse', 'toilette', 'comme', 'femme', 'mettre', 'tout', 'nécessaire', 'hygiénique', 'trousse', 'quand', 'rendre', 'toilette', 'être', 'sympa', 'être', 'discret'], '4722': ['être', 'côté', 'discrétion', 'autant', 'parler', 'très', 'facilement', 'maladie', 'côté', 'soigner', 'aimer', 'bien', 'cela', 'rester', 'discret', 'être', 'cela', 'aimer', 'bien'], '4723': ['fille', 'quand', 'revenir', 'maison', 'vouloir', 'gens', 'autour', 'savoir', 'être', 'mal', 'point', 'vouloir', 'e', 'faire', 'piqûre', 'gens', 'savoir', 'demander', 'faire', 'piqûre', 'voir', 'aiguille', 'cela', 'parfait', 'faire', 'piqûre', 'pincer', 'peau', 'poser', 'ventre', 'cela', 'faire', 'tout', 'seul'], '5433': ['moins', 'cher', 'moins', 'être', 'quand', 'moins', 'qualitatif', 'seau']}
第四,坚持PEP8:stopWords
应该是stop_words
,d_filtered_Words
应该是d_filtered_words
(这是真的重要)。