我只是想按玩家得分的跑步次数对这个指标进行排序,但我不知道该怎么做。
orangecap({'test1':{'Ashwin':84, 'Kohli':120}, 'test2':{'ashwin':59, 'Pujara':42}})
这里“ orangecap”是要调用的函数的定义,我想返回得分最高的人的名字(在本例中为Kohli)。
可以在不使用外部库的情况下完成此操作吗?
答案 0 :(得分:2)
设置
dict_of_dicts = {
'test1': {'Ashwin' :84, 'Kohli': 120},
'test2': {'ashwin': 59, 'Pujara': 42},
'test3': {'Pandas': 120, 'R': 119}
}
解决方案
似乎您有一个dict的dict(不是列表)。您需要遍历列表中的每个值,并查看它是否大于最大值(最初设置为None,以及播放器的名称和第一个键,例如test1
,test2
等)。如果是这样,请将其值重置为新的最大值,然后将玩家名称和键追加到持有获得最大值的玩家的列表中(以考虑平局,例如Kohli&Pandas)。
def orangecap(dict_of_dicts):
max_key_name = []
max_score = None
for key in dict_of_dicts:
for name, score in dict_of_dicts[key].iteritems(): # .items() in Python 3.
if score > max_score:
max_key_name = [(key, name)]
max_score = score
elif score == max_score:
max_key_name.append((key, name))
return max_key_name, max_score
>>> orangecap(dict_of_dicts=dict_of_dicts)
([('test1', 'Kohli'), ('test3', 'Pandas')], 120)
答案 1 :(得分:0)
一个非常简单的解决方案是迭代dict的dict,使用两个变量来存储跑步和选手,就像这样-
def orangecap(your_dict):
max_runs = 0
player_scored = ''
for match, stats in your_dict.items():
for player, runs in stats.items():
if runs > max_runs:
max_runs = runs
player_scored = player
return player_scored