首页 > 解决方案 > 如何在 python 3.7 中修复“运行时错误:迭代期间字典更改大小”

问题描述

if __name__ == '__main__':

    students = {}

    for _ in range(int(input())):
        name = input()
        score = float(input())
        seq = {name: score}
        students.update(seq)
        a = min(students, key=students.get)

    for key, value in students.items():
        while a == min(students, key=students.get):
            del students[min(students, key=students.get)]

    print(students)

在上面的代码中,我想删除字典中的最小值元素。

我能够从字典中删除单个最小元素。但是如果字典中有多个相同的最小值元素,我想删除所有这些最小值元素。

标签: pythonpython-3.xdictionaryruntime-error

解决方案


您可以使用minonstudents.values()来获得最小值,

然后收集所有具有相同值的键,

然后使用del所有这些键,如下所示:

if __name__ == '__main__':

    students = {}

    for _ in range(int(input())):
        name = input()
        score = float(input())
        seq = {name: score}
        students.update(seq)

    min_val = min(students.values())
    all_keys_with_min_val = [key for key, value in students.items() if value == min_val]

    for key in all_keys_with_min_val:
        del students[key]

    print(students)

推荐阅读