Lou*_*s93 11 python collections containers counter
from collections import *
ignore = ['the','a','if','in','it','of','or']
ArtofWarCounter = Counter(ArtofWarLIST)
for word in ArtofWarCounter:
if word in ignore:
del ArtofWarCounter[word]
Run Code Online (Sandbox Code Playgroud)
ArtofWarCounter是一个Counter对象,包含战争艺术中的所有单词.我正试图ignore
从ArtofWarCounter 中删除单词.
追溯:
File "<pyshell#10>", line 1, in <module>
for word in ArtofWarCounter:
RuntimeError: dictionary changed size during iteration
Run Code Online (Sandbox Code Playgroud)
Joc*_*zel 15
不要遍历dict的所有单词来查找条目,dicts在查找时要好得多.
循环遍历ignore
列表并删除存在的条目:
ignore = ['the','a','if','in','it','of','or']
for word in ignore:
if word in ArtofWarCounter:
del ArtofWarCounter[word]
Run Code Online (Sandbox Code Playgroud)
Joh*_*ooy 12
对于最小的代码更改,请使用list
,以便您迭代的对象与之分离Counter
ignore = ['the','a','if','in','it','of','or']
ArtofWarCounter = Counter(ArtofWarLIST)
for word in list(ArtofWarCounter):
if word in ignore:
del ArtofWarCounter[word]
Run Code Online (Sandbox Code Playgroud)
在Python2中,您可以使用ArtofWarCounter.keys()
而不是list(ArtofWarCounter)
,但是当编写具有未来保护功能的代码时,为什么不这样做呢?
最好不要计算你想忽略的项目
ignore = {'the','a','if','in','it','of','or'}
ArtofWarCounter = Counter(x for x in ArtofWarLIST if x not in ignore)
Run Code Online (Sandbox Code Playgroud)
请注意,我做ignore
了一个set
使测试x not in ignore
更有效率的
归档时间: |
|
查看次数: |
16016 次 |
最近记录: |