2016-08-18 70 views
-1

我们代表如下的两个级别的字典横跨比赛的顺序击球手的得分:代码成绩的分析

{'match1':{'player1':57, 'player2':38}, 'match2':{'player3':9, 'player1':42}, 'match3':{'player2':41, 'player4':63, 'player3':91} 

每场比赛由一个字符串标识,因为是每个玩家。分数都是整数。与比赛相关的名字不是固定的(在这里他们是'match1','match2','match3'),也不是球员的名字。玩家不需要在所有比赛中记录得分

定义一个Python函数“orangecap(d)”,它读取此表单的字典d并标识总分最高的玩家。你的函数应该返回一个对(playername,topscore),其中playername是一个字符串,具有最高得分的玩家的名字,并且topscore是一个整数,即玩家名称的总分数。

输入将会是最高总分从来没有任何关系。

例如:

>>> orangecap({'match1':{'player1':57, 'player2':38}, 'match2':{'player3':9, 'player1':42}, 'match3':{'player2':41, 'player4':63, 'player3':91}}) 
('player3', 100) 

>>> orangecap({'test1':{'Ashwin':84, 'Kohli':120}, 'test2':{'ashwin':59, 'Pujara':42}}) 
('Kohli', 120) 
+0

*您究竟面临的问题是什么? –

+1

堆栈溢出不是代码拧紧服务。如果你想让别人为你做功课,你会(希望)失去运气。相反,你应该尝试自己解决问题。如果遇到问题,那就来向我们描述一下,我们很乐意帮助你弄清楚什么是错误的,以及如何解决问题。 – Blckknght

回答

0

使用“得到”方法返回的默认设置为零,然后添加。像这样:

adict = {'match1':{'player1':57, 'player2':38}, 
     'match2':{'player3':9, 'player1':42}, 
     'match3':{'player2':41, 'player4':63, 'player3':91}} 

def orangecap(dict1): 
    dict2 = {} 
    for k1 in dict1: 
     for k2 in dict1[k1]: 
      dict2[k2] = dict2.get(k2, 0) + dict1[k1][k2] 
    player = max(dict2, key=dict2.get) 
    return player, dict2[player] 

print (orangecap(adict)) 


>>> adict = {'match1':{'player1':57, 'player2':38}, 
     'match2':{'player3':9, 'player1':42}, 
     'match3':{'player2':41, 'player4':63, 'player3':91}} 


>>> print (orangecap(adict)) 
('player3', 100) 
>>>