如何将列表中元组中的整数与一个字典中另一个列表中另一个元组中的另一个整数进行比较?

时间:2016-11-28 07:41:13

标签: python list dictionary tuples

例如,我有:

>>>a = {'dog': [('cute', 10, 20)], 'cat': [('nice', 12, 11)], 'fish':[('hate', 1, 3)]}

期望返回'dog',因为索引1和2的整数之和为30,这大于cat和fish的整数之和。

如果我不使用导入,有没有简单的方法呢?

3 个答案:

答案 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