我是初学者编程。 我正在努力制作代码,根据胜利和游戏的数量返回游戏结果顺序。例如,
teams = {
'Arsenal FC': {
'name': 'Arsenal FC',
'wins': 4,
'games_played': 15,
},
'Chelsea FC': {
'name': 'Chelsea FC',
'wins': 6,
'games_played': 16,
},
'Madrid Real': {
'name': 'Madrid Real',
'wins': 4,
'games_played': 11,
}
}
这种情况,我想像这个列表一样返回上面:
[
{
'Chelsea FC': {
'name': 'Chelsea FC',
'wins': 6,
'games_played': 16,
},
'Madrid Real': {
'name': 'Madrid Real',
'wins': 4,
'games_played': 11,
},
'Arsenal FC': {
'name': 'Arsenal FC',
'wins': 4,
'games_played': 15,
}
]
球队获胜最多应该是顶级。如果胜利的数量等于另一支球队,那么球队应该会有更少的比赛。 对不起,我的英语能力差。如果您无法理解我的目标,请询问。 如果你能解释一下细节,我们将不胜感激!
答案 0 :(得分:4)
您可以将“排序键”传递给sorted()
:
>>> sorted(teams.items(), key=lambda x:(-x[1]["wins"], x[1]["games_played"]))
[('Chelsea FC', {'games_played': 16, 'name': 'Chelsea FC', 'wins': 6}),
('Madrid Real', {'games_played': 11, 'name': 'Madrid Real', 'wins': 4}),
('Arsenal FC', {'games_played': 15, 'name': 'Arsenal FC', 'wins': 4})]
要获得示例中的确切字典结构,可以执行
>>> [{k:v} for k,v in sorted(teams.items(), key=lambda x:(-x[1]["wins"], x[1]["games_played"]))]
[{'Chelsea FC': {'games_played': 16, 'name': 'Chelsea FC', 'wins': 6}},
{'Madrid Real': {'games_played': 11, 'name': 'Madrid Real', 'wins': 4}},
{'Arsenal FC': {'games_played': 15, 'name': 'Arsenal FC', 'wins': 4}}]
<强>解释强>
x[1]
是您要迭代的每个字典项的值。通过添加-
,我们可以从最大到最小排序,如果您想按多个标准排序,只需使用排序值元组。