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)
在上面的代码中,我想删除字典中的最小值元素。
我能够从字典中删除单个最小元素。但是,如果字典中有多个相同的最低价值元素,我想删除所有这些最低价值元素。
答案 0 :(得分:0)
您可以在min
上使用students.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)
答案 1 :(得分:0)
最可靠的方法不是删除条目,而是创建没有条目的新dict
。使用dict
理解来过滤出所有得分最低的条目:
if __name__ == '__main__':
students = {}
for _ in range(int(input())):
name = input()
score = float(input())
students[name] = score # store directly without update
min_score = min(students.values()) # calculate minimum only once
students = {
name: score for name, score in students.items()
if score != min_score # only keep students above minimum score
}
print(students)
如果您要修改初始的dict
,请创建一个单独的条目列表以进行迭代:
...
min_score = min(students.values()) # calculate minimum only once
min_score_students = [name for name, score in students.items() if score == min_score]
for student in min_score_students:
del students[key]
print(students)