2017-09-28 35 views
0

如何检索字典中包含值列表中最高数字的密钥?字典值中的最大数

l = { 
'1': [1, 2, 3, 4, 5, 6, 8, 9, 10, 11], 
'3': [1, 2, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15], 
'5': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 21, 17, 18, 19], 
'4': [4, 1, 2, 3, 5, 6], 
'7': [1, 2, 8, 3, 4, 5, 6, 7] 
} 

在这个例子中键5包含一个值19,所以这应该使用它返回最大值的键功能被返回

+3

你似乎丢失的问题,一些代码。请[编辑]您的问题以包括它 –

回答

3

你可以转换为list字典键(蟒3)适用max5

编辑:在list

l = {'1': [1, 2, 3, 4, 5, 6, 8, 9, 10, 11], 
'3': [1, 2, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15], 
'5': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 21, 17, 18, 19], 
'4': [4, 1, 2, 3, 5, 6], 
'7': [1, 2, 8, 3, 4, 5, 6, 7]} 

print(max(list(l.keys()),key=lambda k:max(l[k]))) 

结果的值,它的工作原理,但在计算最大值时不必要地查询字典。更好地获得关键+值对,并在tuple的列表上工作。最后,拿第一个元素。要稍快(无键查找):

max(list(l.items()),key=lambda v:v[1][-1])[0] 
0

你可以试试这个:

l = { 
    '1': [1, 2, 3, 4, 5, 6, 8, 9, 10, 11], 
    '3': [1, 2, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15], 
    '5': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 21, 17, 18, 19], 
    '4': [4, 1, 2, 3, 5, 6], 
    '7': [1, 2, 8, 3, 4, 5, 6, 7] 
} 
final_val = sorted(l.items(), key=lambda x: max(x[-1]))[-1][0] 
print(final_val) 

输出:

5