例如,我有:
>>>a = {'dog': [('cute', 10, 20)], 'cat': [('nice', 12, 11)], 'fish':[('hate', 1, 3)]}
期望返回'dog'
,因为索引1和2的整数之和为30,这大于cat和fish的整数之和。
如果我不使用导入,有没有简单的方法呢?
答案 0 :(得分:7)
只需使用自定义键max
。
>>> a = {'dog': [('cute', 10, 20)], 'cat': [('nice', 12, 11)], 'fish':[('hate', 1, 3)]}
>>> max(a, key=lambda x: sum(a[x][0][1:]))
'dog'
每个x
都是字典中的关键字,因此我们会在此关键字sum
的第一个元素中获取1
个元素x
及其后续版本a
中的值。
答案 1 :(得分:2)
print max(a.items(), key=lambda (key, val): sum(val[0][1:]))[0] # dog
答案 2 :(得分:2)
Tigerhawk钉了它,我的解决方案,如果有人想要一个传统的非pythonic soln -
a = {'dog': [('cute', 10, 20)], 'cat': [('nice', 12, 11)], 'fish':[('hate', 1, 3)]}
max_key = a.keys()[0]
max_sum=0
for key in a.keys():
cur_sum = sum(a[key][0][1:])
if cur_sum>max_sum:
max_sum = cur_sum
max_key = key
print max_key