Python基于dict中的两个值进行排序

时间:2015-09-27 15:41:18

标签: python sorting

我有一个构建为

的词典
>> dict = {'foo':[20,15],'bar':[10,5],'is':[35,3],'a':[20,10],'word':[50,1]}

我想找到列表值[0]最高且值[1]的最低值的键(或者它的近似值),但是它给了我一个完全的清醒效果

因此,对于此示例,所需的结果将是

>> 'word':[50,1]

有人建议我应该更清楚地定义我的参数:现在我想要从[0]值打印前10个最高结果,只要第二个值保持在5以下

感谢您抽出宝贵时间阅读问题

2 个答案:

答案 0 :(得分:2)

您可以使用具有正确键功能的max功能:

>>> max(dict.items(),key=lambda x: (x[1][0],-x[1][1]))
('word', [50, 1])

请注意,在这种情况下,x[1][0](最大值)的优先级大于第二个,因此对于某些字典,如下所示:

>>> dict = { 'foo': [35,5], 'word': [60, 25]}

它会返回:

('word', [60, 25])

您还可以根据值的差异获得项目(看起来更接近您想要的):

>>> dict = { 'foo': [70,5], 'word': [68,1]}
>>> max(dict.items(),key=lambda x: (x[1][0]-x[1][1]))
('word', [68, 1])

答案 1 :(得分:0)

尝试使用以下代码。我不确定它是否满足您的所有场景

    dict = {'a': [20, 10], 'word': [50, 1], 'is': [35, 3], 'foo': [20, 15], 'bar': [10, 5]}

    value = max(dict.values())
    b = value[1]
    for each in dict.values():
        if value[0] == each[0] and each[1] < b:
             value = each

    print (dict.keys()[dict.values().index(value)],value)