考慮到點數(“wins”*3 “draws”),我需要回傳插入字典中的幾支球隊中最好球隊的名字,如果有兩支球隊并列,我想回傳一個最佳凈勝球(“得分” - “失球”) 我試圖這樣做,但 te 函式回傳了巴塞羅那而不是皇家馬德里。
def football_league(teams):
best_team = max(teams, key=lambda k: k["wins"]*3 k["draws"])
if len(best_team)>1:
best_team = max(teams, key=lambda k: k["scored"] - k["conceded"])
return best_team["name"]
else:
return best_team["name"]
la_liga = [
{
"name": "Sevilha",
"wins": 18,
"loss": 10,
"draws": 10,
"scored": 60,
"conceded": 10,
},
{
"name": "Barcelona",
"wins": 22,
"loss": 8,
"draws": 8,
"scored": 88,
"conceded": 20,
},
{
"name": "Real Madrid",
"wins": 22,
"loss": 8,
"draws": 8,
"scored": 98,
"conceded": 29,
},
{
"name": "Atletico Madrid",
"wins": 22,
"loss": 8,
"draws": 8,
"scored": 90,
"conceded": 30,
}
]
print(football_league(la_liga))
uj5u.com熱心網友回復:
max()不會回傳一組團隊,只回傳一個結果。您需要的是根據數量的元組對串列進行排序(points, goal_difference)。以下代碼:
la_liga = [
{
"name": "Sevilha",
"wins": 18,
"loss": 10,
"draws": 10,
"scored": 60,
"conceded": 10,
},
{
"name": "Barcelona",
"wins": 22,
"loss": 8,
"draws": 8,
"scored": 88,
"conceded": 20,
},
{
"name": "Real Madrid",
"wins": 22,
"loss": 8,
"draws": 8,
"scored": 98,
"conceded": 29,
},
{
"name": "Atletico Madrid",
"wins": 22,
"loss": 8,
"draws": 8,
"scored": 90,
"conceded": 30,
}
]
print(sorted(la_liga, key= lambda t: (t["wins"]*3 t["draws"],
t["scored"] - t["conceded"]), reverse= True)[0])
將回傳真正的最佳團隊:
{'name': 'Real Madrid', 'wins': 22, 'loss': 8, 'draws': 8, 'scored': 98, 'conceded': 29}
(雖然,作為西班牙人,我更希望其他球隊獲勝 ;-) )
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/528995.html
標籤:Python字典
