python - 如何在 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)
在上面的代码中,我想删除字典中的最小值元素。
我能够从字典中删除单个最小元素。但是如果字典中有多个相同的最小值元素,我想删除所有这些最小值元素。
解决方案
您可以使用min
onstudents.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)
推荐阅读
- android - 如何解决生成同名'Lad;' 当给定一个新的缩小名称错误Android时
- regex - 谷歌表格过滤器排除有条件的重复项
- git - 写库的时候,是不是应该把TypeScript生成的JavaScript文件放到gitignore里面?
- jquery - 如何将 c# DataTable 传递给 jquery DataTable
- c# - LINQ中的字符串排序
- asp.net - “如何修复‘实体类型的实例’无法跟踪,因为键值‘{TypeId: 1}’的另一个实例已被跟踪。
- java - 使用 Apache Commons 和 Java FTP 下载后 Word 文档无法打开
- hibernate - Spring Data JPA:保存在一次事务中在父母之间移动孩子的父母列表
- javascript - 单独注册和登录服务的处理错误
- android - 如何使用动态响应键解析 json