使用字典中的元组跟踪位置(Python 3)

时间:2018-03-26 04:15:15

标签: python python-3.x

我已经实现了字典/散列算法,以便为每个播放的队伍添加分数(t1,t2代表队伍,p1,p2代表每场比赛各自的分数)。如果一支客场球队获胜,则会增加3500分,如果主队获胜,则增加3000分,如果他们获胜则增加1000分,如果他们输了则增加50分我的代码确实如此,但是当两个团队在最终排行榜上排在第一位或最后一位时,我会遇到错误。我的导师建议使用元组保持一个"计数器"但是,由于元组不可变,我不知道如何在不增加程序运行时间的情况下处理这个问题。有任何想法吗?

import sys

def firstLast(q):

     games = {}
     for i in range(q):
        t1, t2, p1, p2 = input().strip().split(' ')
        t1, t2, p1, p2 = [t1, t2, int(p1), int(p2)]

        if t1 not in games:
            games[t1] = p1
        else:
            games[t1] += p1

        if t2 not in games:
            games[t2] = p2
        else:
            games[t2] += p2

        if p1>p2:
            games[t1]+=3000
            games[t2]+=50
        elif p1==p2:
            games[t1]+=1000
            games[t2]+=1000
        elif p1<p2:
            games[t1]+=50
            games[t2]+=3500

    #first = max(games.values())
    #last = min(games.values())
    first = max(games, key=games.get)
    last = min(games, key=games.get)

    print (first,last,sep='\n')


if __name__ == "__main__":
    q = int(input())
    result = firstLast(q)

1 个答案:

答案 0 :(得分:0)

这是一个返工,打印所有并列第一个或最后一个而不是随机显示一个的球队:

from collections import defaultdict

def firstLast(q):

    games = defaultdict(int)

    for _ in range(q):
        t1, t2, p1, p2 = input().strip().split(' ')
        p1, p2 = int(p1), int(p2)

        games[t1] += p1
        games[t2] += p2

        if p1 > p2:
            games[t1] += 3000
            games[t2] += 50
        elif p1 < p2:
            games[t1] += 50
            games[t2] += 3500
        else:
            games[t1] += 1000
            games[t2] += 1000

    maximum = max(games.values())
    minimum = min(games.values())

    first = [key for key, value in games.items() if value == maximum]
    last = [key for key, value in games.items() if value == minimum]

    print(' '.join(first), ' '.join(last), sep='\n')

if __name__ == "__main__":
    q = int(input())
    firstLast(q)

但是,这并不是你想要的。我的问题是我无法理解“最后排在最后一位的球队”的概念。也许如果您提供了一些示例,它可能会帮助我和/或其他人回答您的问题。