Python 我想从字典里找出两个最小的数字

Python 我想从字典里找出两个最小的数字,python,Python,基本上我有一个有6个值的字典,我想找出两个最小的值来消除它们。如何从字典中获取两个最小的值 我已经尝试使用:min(eleminate.items(),key=lambda x:x[1]),但这只对我有效一次。第二个值没有出现 eleminate = {"Couple1":Couple1,"Couple2":Couple2,"Couple3":Couple3,"Couple4":Couple4,"Couple5":Couple5,"Couple6":Couple6} eleminate.item

基本上我有一个有6个值的字典,我想找出两个最小的值来消除它们。如何从字典中获取两个最小的值

我已经尝试使用:min(eleminate.items(),key=lambda x:x[1]),但这只对我有效一次。第二个值没有出现

eleminate = {"Couple1":Couple1,"Couple2":Couple2,"Couple3":Couple3,"Couple4":Couple4,"Couple5":Couple5,"Couple6":Couple6}
eleminate.items()
FSmallest = min(eleminate.items(), key=lambda x: x[1]) 
SSmallest = min(eleminate.items(), key=lambda y: y[0]) 
print(eleminate)
gone = print(FSmallest," and ",SSmallest," have been eleminated!")
我的代码将相同的值打印两次。例如:

That was the end of Round one!
{'Couple1': 3, 'Couple2': 6, 'Couple3': 9, 'Couple4': 12, 'Couple5': 15, 'Couple6': 18}

('Couple1', 3)  and  ('Couple1', 3)  have been eleminated!

首先,使用值上的
sorted
按值对词典进行排序

import operator
eleminate = {'Couple1': 3, 'Couple2': 6, 'Couple3': 9, 'Couple4': 12, 'Couple5': 15, 'Couple6': 18}

sorted_eleminate = sorted(eleminate.items(), key=operator.itemgetter(1))
#[('Couple1', 3), ('Couple2', 6), ('Couple3', 9), ('Couple4', 12), ('Couple5', 15), ('Couple6', 18)]
然后删除排序列表中的前两个元素

for key, value in sorted_eleminate[0:2]:
    del eleminate[key]
print(eleminate)
#{'Couple3': 9, 'Couple4': 12, 'Couple5': 15, 'Couple6': 18}
或者只获取没有前两个元素的字典

print(dict(sorted_eleminate[2:]))
#{'Couple3': 9, 'Couple4': 12, 'Couple5': 15, 'Couple6': 18}

有几种方法可以做到这一点

我会使用排序的

from operator import itemgetter

print(sorted(data.items(), key=itemgetter(1))[:2])
输出:

[('Couple1', 3), ('Couple2', 6)]
{'Couple3': 9, 'Couple4': 12, 'Couple5': 15, 'Couple6': 18}
要获取不包含这两项的词典,请执行以下操作:

dict(sorted(data.items(), key=itemgetter(1))[2:]))
输出:

[('Couple1', 3), ('Couple2', 6)]
{'Couple3': 9, 'Couple4': 12, 'Couple5': 15, 'Couple6': 18}

FSmallest
是最低的值,
SSmallest
是最低的名称。代码中的任何内容都不会排在第二位。按值排序
eleminate.items()
,然后获取结果列表的前两个元素。顺便说一句,您有拼写错误,它是
消除