字符串键和Int值的基本Python字典

时间:2015-07-30 19:51:08

标签: python dictionary

我正在编写一个非常基本的脚本,根据去年的全季数据来计算NFL球员的梦幻足球分数。当我这样做的时候,我会看看他们今年会错过的游戏数量,并将折扣因子应用到他们的总积分上。

E.g。汤姆布拉迪今年将缺席4场比赛,因此他失去了25%的积分。

由于很少有玩家会错过游戏,我会有一本字典,将玩家的名字映射到他将错过的游戏数量。当我创建玩家时,我会检查他的名字是否在SUSPENSIONS字典中,如此:

if name in SUSPENSIONS.keys():
    newTE = TE(name, team, rushingYards, rushingTouchdowns, rushingFumbles, receptionYards, receptionTouchdowns, SUSPENSIONS[name])

我和安东尼奥盖茨一起测试了这个,他今年将缺席4场比赛。他的25%的折扣没有得到应用。我运行上面的代码然后执行:

print(str(newTE.gamesSuspended))

然后回来。

这是我的SUSPENSIONS词典:

SUSPENSIONS = {"Antonio Gates": 4, "Ahmad Bradshaw": 1, "Trey Watts": 4, "Tom Brady": 4, "Josh Gordon": 16, "Le'Veon Bell": 2, "LeGarrette Blount": 1}

一些有趣的事情:

1)尽管Le'Veon Bell,Antonio Gates和大多数其他人没有,但Tom Brady的折扣确实得到了应用。

2)我的代码知道“Antonio Gates”是SUSPENSIONS词典中的关键词。出于某种原因,它将gamesSuspended字段设置为0而不是4(与字典中的名称对应的值)。这是为什么?

任何帮助整理这个将非常感激, bclayman

编辑以显示TE.py:

from Player import *
from constants import *

class TE(Player):
    def __init__(self, name, team, rushingYards, rushingTouchdowns, rushingFumbles, receptionYards, receptionTouchdowns, position="TE", gamesSuspended=0):
        super().__init__(name, team, rushingYards, rushingTouchdowns, rushingFumbles, gamesSuspended)
        self.receptionYards = receptionYards
        self.receptionTouchdowns = receptionTouchdowns
        self.position = "TE"

    def calculatePoints(self):
        return (super().calculatePercentageOfSeason() * (super().calculatePoints() + POINTS_PER_RECEPTION_YARD * self.receptionYards + POINTS_PER_RECEPTION_TOUCHDOWN * self.receptionTouchdowns))

    def toString(self):
        return "position: " + self.position + " " + super().toString() + " rushing yards: " + str(self.rushingYards) + " rushing touchdowns: " + str(self.rushingTouchdowns) + " rushing fumbles: " + st    r(self.rushingFumbles) + " reception yards: " + str(self.receptionYards) + " reception touchdowns: " + str(self.receptionTouchdowns)

所以TE(...)是Tight End类的构造函数。如果gamesSuspended变量未绑定,则将其初始化为0(因为它是可选参数)。但我确实传递了gamesSuspended ......

1 个答案:

答案 0 :(得分:3)

您正在通过gamesSuspended播放器的位置,这是我认为您不想要的。

在构造函数中有如此多的参数,有时使用命名参数会使它们混淆不清。

newTE = TE(name, team, rushingYards, rushingTouchdowns, rushingFumbles, receptionYards,
           receptionTouchdowns, position="TE", gamesSuspended=SUSPENSIONS[name])