微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何解决字典在迭代错误时更改大小的问题?

如何解决如何解决字典在迭代错误时更改大小的问题?

替代解决方

如果您正在寻找字典中的最小值,则可以执行以下操作:

min(dictionary.values())

如果不能使用min,则可以使用sorted:

sorted(dictionary.values())[0]

为什么会出现此错误

附带说明一下,您遇到的原因Runtime Error是,在内部循环中您修改了外部循环所基于的迭代器。当您pop尚未由外部循环访问的条目并且外部迭代器到达该条目时,它将尝试访问已删除的元素,从而导致错误。 如果您尝试在Python 2.7(而不是3.x)上执行代码,则实际上会得到一个Key Error

我该如何避免该错误

如果要基于循环的 迭代器 修改循环中的 迭代对象 ,则应使用其深层副本

解决方法

我想在字典中弹出所有较大的值及其键,并保持最小的值。这是我程序的一部分

for key,value in dictionary.items():
    for key1,value1 in dictionary.items(): 
            if key1!= key and value > value1:
                dictionary.pop(key)             
    print (dictionary)

导致

RuntimeError: dictionary changed size during iteration

如何避免此错误?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。