J'essaie d'utiliser un dictionnaire pour m'empêcher de stocker des doublons et cela fonctionne bien mais quand j'essaie de sortir les objets du dictionnaire et d'appeler des fonctions sur eux l'interprète me dit:Objets hors de OrderedDict en Python à modifier
Traceback (most recent call last):
File "C:/Users/ejsol/Desktop/NflData/playerDataCollector.py", line 24, in
<module>
print unique_qb[0].stats(2015, week=13)
TypeError: 'OrderedDict' object is not callable
J'ai essayé de faire des copies en profondeur des éléments dans le dictionnaire et en utilisant ceux de faire une liste mais je reçois toujours la même question. J'ai lu quelques informations sur la façon dont python lie les noms aux objets, c'est pourquoi j'ai pensé que copier les objets hors du dictionnaire fonctionnerait mais il semble ne pas fonctionner.
Heres mon code:
import nflgame
import copy
players = dict()
qbs = dict()
#get a list of all games in 2014
games = nflgame.games(2014)
#make a list of the players in each game
for g in games:
_p = g.players
for p in _p:
if p.playerid not in players:
players[p.playerid] = p
#find all the qbs in the players
for p in players:
if players[p].guess_position == 'QB' and p not in qbs:
qbs[p] = players[p]
#copy qbs to a list that I can manipulate
unique_qb = []
for v in qbs:
c = copy.deepcopy(qbs[v])
unique_qb.append(c)
print unique_qb[0].name
print unique_qb[0].stats(2015, week=13)#this line produces the error
Comment puis-je obtenir des objets d'un dictionnaire à utiliser sans la contrainte d'être dans un dictionnaire ordonné et étant donc « pas appelable »
modifier:
la fonction
unique_qb[0].stats(2015, week=13)
est un appel à l'objet tha t est stocké dans cette entrée du dictionnaire et voici son stub de l'api nflgame que j'essaie d'utiliser.
def stats(self, year, week=None):
games = nflgame.games(year, week)
players = list(nflgame.combine(games).filter(playerid=self.playerid))
if len(players) == 0:
return GamePlayerStats(self.player_id, self.gsis_name,
None, self.team)
return players[0]
Il n'y a aucune utilisation de 'OrderedDict' ici. Ce qui me rend un peu méfiant que vous n'ayez aucune idée de ce que vous faites, ou que votre exemple omette des morceaux très importants. – ShadowRanger
Je n'ai aucune idée de ce que je fais Je ne connais pas du tout Python. Et je ne pensais pas que j'utilisais OrderedDict non plus, mais le message d'erreur me l'a dit. – esoler
Vous êtes indentation dans le code posté est faux. Je reçois 'IndexError: liste index hors de la plage' sur la ligne' print unique_qb [0] .name', mais je peux reproduire votre erreur en désindiquant '#copy qbs ...' et tout ce qui suit. –