【发布时间】:2021-12-29 23:08:18
【问题描述】:
每当我运行以下代码时,我都会在迭代期间收到字典大小更改的错误。我只是想将一个列表放入字典中,键是列表中的元素,值是计数(出现的次数)。
我希望输出是最大值 - 每个值。如果最大值等于字典中的任何值,则将其删除。
这是我的代码:
from collections import Counter
elements=["a", "b", "abc", "c", "a"]
z=Counter(elements)
q=max(z.values()) #get max number
for x in z:
if z[x] < q:
z[x] = q-z[x]
else:
del z[x] #I am getting an error because of this line of code.
print(z)
关于如何解决此错误的任何想法,以便输出如下所示:
{'b': 1, 'abc': 1, 'c': 1}
【问题讨论】:
-
您是否会收到此错误,因为您在迭代字典时从字典中删除了一个项目?从字典中删除一个项目会改变字典的大小(它会减小 1)。
-
列出要删除的键并在循环后将其删除。
标签: python python-3.x collections