【发布时间】:2017-02-24 16:13:27
【问题描述】:
我们在一个二级字典中表示一系列比赛中的击球手得分,如下所示:
{'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}}) (“科利”,120)
这是我的代码:
def orangecap(d):
s=[]
t=[]
for i in sorted(d.keys()):
for j in sorted(d[i].keys()):
flag=0
for k in range(len(s)):
if(s[k]==j):
t[k:k]+=[d[i][j]]
flag=1
break
if(flag==0):
s.append(j)
t.append(d[i][j])
m=max(t)
for i in range(len(t)):
if t[i]==m:
return (s[i],m)
【问题讨论】:
-
@JohnConde 在尝试了很多之后,我正在寻求帮助,因为我是 Python 新手
-
你忘了问问题...
标签: python