Python 检查多个最大字典值,并相应地输出键

Python 检查多个最大字典值,并相应地输出键,python,list,if-statement,dictionary,Python,List,If Statement,Dictionary,我正在做一个程序,需要检查4个方面的输入的总和,并根据最高的总和输出一些东西。我已经用if和elif语句做了一个“算法”,虽然有效,但问题是它大约有250行代码长。因此,我开始研究一种不同的(正确的)方法来检查这些变量,并创建了下面的代码。唯一的问题是,如果两个或三个和相同,则此代码不起作用。这是因为使用了只输出一个最大值的max()函数。现在我想知道是否有办法做到这一点,例如:sum\u right和sum\u left是相同的,它将同时输出字符串/键'left'和字符串'right'。所以我

我正在做一个程序,需要检查4个方面的输入的总和,并根据最高的总和输出一些东西。我已经用
if
elif
语句做了一个“算法”,虽然有效,但问题是它大约有250行代码长。因此,我开始研究一种不同的(正确的)方法来检查这些变量,并创建了下面的代码。唯一的问题是,如果两个或三个和相同,则此代码不起作用。这是因为使用了只输出一个最大值的
max()
函数。现在我想知道是否有办法做到这一点,例如:
sum\u right
sum\u left
是相同的,它将同时输出字符串/键
'left'
和字符串
'right'
。所以我可以检查并选择执行哪一方。到目前为止,在浏览这个论坛和查看python文档时,我还没有找到答案。非常感谢

# numbers separated by comma's

a = raw_input('Right').split(',')
b = raw_input('Left').split(',')
c = raw_input('Front').split(',')
d = raw_input('Back').split(',')

sum_right = sum(map(int, a))
sum_left = sum(map(int, b))
sum_front = sum(map(int, c))
sum_back = sum(map(int, d))

sum_input_list = {'right': sum_right, 'left': sum_left, 'front': sum_front, 'back': sum_back}

side = [(value, key) for key, value in sum_input_list.items()]
max_side = max(side)[1]

if max_side == 'right':
    print 'do something right'
elif max_side == 'left':
    print 'do something left'
elif max_side == 'front':
    print 'do something front'
elif max_side == 'back':
    print 'do something back'

您需要找到最大值:

maxval = max(sum_input_list.values()) 
然后获取相应的密钥:

sides = [k for k, v in sum_input_list.items() if v == max_val]
你会有一个像下面这样的口述

>> final_vals
>> {5: ["right", "front"],
    4: ["left"],
    1: ["back"]}
现在可以从关键帧中选择最大值

>> final_vals[max(final_vals.keys())]
>> ["right", "front"]
并从中构造字符串

best_directions = final_vals[max(final_vals.keys())]
print "do something %s" % ", ".join(best_directions)

>> "do something right, front"
您还将不再使用
if
块来打印方向

best_directions = final_vals[max(final_vals.keys())]
print "do something %s" % ", ".join(best_directions)

>> "do something right, front"