2016-01-27 24 views
0

我正在編寫一個足球桌,其中有一個獲得最高點數的函數。這些點是由沒有。勝利* 3 +沒有。抽獎。如果有兩個相同的話,那麼抽籤最少的那個會贏。使用帶條件語句的字典上的最大值函數

當前我正在使用字典來存儲團隊類的屬性,如名稱和總點數。我知道我可以通過在python中使用max函數來遍歷鍵和值來找到最高值。

我想知道的是,如果我有一個格式名稱的單獨字典,我應該如何返回最少贏一個:loss?

以簡寫形式,找到最高得分球隊,並且如果有兩個相同得分的球隊,則返回損失最少的球隊。

def getWinner(classList): 
    teamPoints = {} 
    losses = {} 
    for item in classList: 
     teamPoints[item.getName()] = item.getPoints() 
     losses[item.getName()] = item.getLosses() 
    return max(teamPoints, key=teamPoints.get) 

此代碼目前獲得最高的分數,但正確的,如果有兩個具有相同點,但不同的損失。

+0

請編輯您的問題,包括代碼爲文本。有一個'{}'按鈕應該用於格式化代碼示例。 –

回答

1

您可以使用Python的內置函數sorted函數將自定義的key函數用作比較器。如果你只是第一個結果,他們只需選擇列表的第一個元素。

def key(element): 
    return (element["name"] , - element["losses"]) 

winner = sorted(results, key=key)[0] 

(假設「結果」是包含每個團隊中的條目您的字典清單)