使用字典的python程序

使用字典的python程序,python,dictionary,Python,Dictionary,我们在两级词典中表示一系列比赛中击球手的得分,如下所示: { 'match1':{ 'player1':57, 'player2':38 }, 'match2':{ 'player3':9, 'player1':42 }, 'match3':{ 'player2':41,

我们在两级词典中表示一系列比赛中击球手的得分,如下所示:

   {
        '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是一个
整数,是playername的总分

输入将确保最高总分不会有任何联系

例如:

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)
如何用python编写程序?

试试以下方法:

def orangecap(match_details):
    players_data = {}
    for k, v in match_details.iteritems():
        for player_name, score in v.iteritems():
            prev_player = player_name
            if prev_player == player_name:
                score = players_data.get(player_name, 0) + score
            players_data[player_name] = score
    high_score_player = max(players_data, key=lambda i: players_data[i])
    print (str(high_score_player), players_data[high_score_player])

请展示您迄今为止所做的尝试;第二步:用Python编写此程序;第三步:???步骤N:利润!def orangecap(d):总计=0表示在[“player1”、“player2”、“player3”、“player4”、“ashwin”、“kohli”、“pujara”]:用于d中的匹配。键():如果在d中有n[match]。键():总计[n]=总计[n]+d[total][n]返回(总计)。我做了这么多,只是我不知道如何继续它的显示错误:回溯(最后一次调用):\n文件“test.py”,第48行,在\n打印中(orangecap(arg),end=“”)\n文件“test.py”,第3行,在orangecap中\n为k,在匹配\u详细信息中为v。iteritems():\n AttributeError:'dict'对象没有属性'iteritems',我已尝试使用python2.7版本,但在我的系统中工作正常。检查你的python版本。我正在使用python3。编译程序后,我输入以下内容:orangecap({'match1':{'player1':57,'player2':38},'match2':{'player3':9,'player1':42},'match3':{'player2':41,'player4':63,'player3':91})('player3',100)。谢谢你的支持,但是我得到了额外的输出,我不知道如何处理。请帮助:输入orangecap({'match1':{'player1':57,'player2':38},'match2':{'player3':9,'player1':42},'match3':{'player2':41,'player4':63,'player3':91})预期输出:('player3',100)实际输出:player3 100\n无