Я пытаюсь использовать словарь, чтобы я не мог хранить дубликаты, и это прекрасно работает, но затем, когда я пытаюсь получить объекты из словаря и вызывать функции на них, интерпретатор говорит мне:Измените объекты из OrderedDict в Python
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
Я попытался сделать глубокие копии элементов в словаре и использовать те, чтобы сделать список, но я все еще получаю один и тот же вопрос. Я прочитал некоторую информацию о том, как python связывает имена с объектами, поэтому я думал, что копирование объектов из словаря будет работать, но похоже, что оно не работает.
Heres мой код:
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
Как я могу получить объекты из словаря можно использовать без ограничений, чтобы быть в упорядоченном словаре и, следовательно, быть «не вызываемая»
редактировать:
функция
unique_qb[0].stats(2015, week=13)
является вызовом объекта ТНА t хранится в этой записи словаря, и вот его заглушка из nflgame api, которую я пытаюсь использовать.
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]
Здесь не используется 'OrderedDict'. Это вызывает у меня подозрение, что вы не знаете, что делаете, или что ваш пример не содержит очень важных частей. – ShadowRanger
Я понятия не имею, что я делаю. Я вообще не знаком с python. И я не думал, что я использую OrderedDict, но сообщение об ошибке показало, что я был. – esoler
Вы вдавлены в выложенный код неправильно. Я получаю 'IndexError: индекс индекса вне диапазона' на строке' print unique_qb [0] .name', но я могу воспроизвести вашу ошибку, отменив «#copy qbs ...» и все после нее. –