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

2024-09-28 21:27:20 发布

您现在位置:Python中文网/ 问答频道 /正文

基本上,我有一个字典有6个值,我想得到两个最小的值,以消除他们。我怎样才能从字典里得到最小的两个值。你知道吗

我已经试过使用:min(删除项目(),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!

Tags: lambdakey字典itemsminprintcouple1couple6
2条回答

有几种方法可以做到这一点。你知道吗

我会使用sorted

from operator import itemgetter

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

输出:

[('Couple1', 3), ('Couple2', 6)]

要获取字典而不包含这两项:

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

输出:

{'Couple3': 9, 'Couple4': 12, 'Couple5': 15, 'Couple6': 18}

首先使用值上的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}

相关问题 更多 >