使对象无序在Python中修改dict

2024-05-20 16:25:20 发布

您现在位置: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如何将名称绑定到对象的信息,因此我认为从字典中复制对象是可行的,但似乎没有效果。在

这是我的代码:

^{pr2}$

如何从字典中获取要使用的对象,而不受有序字典中的约束,因此“不可调用”

编辑:

功能

unique_qb[0].stats(2015, week=13) 

是对存储在字典条目中的对象的调用,这是我尝试使用的nflgameapi中的存根。在

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]

Tags: 对象selfnone内容return字典statsyear
1条回答
网友
1楼 · 发布于 2024-05-20 16:25:20

使用[]而不是()来访问字典。后者用于函数调用。在

使用调试器,.stats是返回OrderedDict的属性:

@property
def stats(self):
    """
    Returns a dict of all stats for the player.
    """
    return self._stats

[Dbg]>>> unique_qb[0].stats
OrderedDict([(u'passing_att', 33), (u'passing_twoptm', 0), (u'passing_twopta', 0), (u'passing_yds', 250), (u'passing_cmp', 22), (u'passing_ints', 0), (u'passing_tds', 2), (u'rushing_lngtd', 0), (u'rushing_tds', 0), (u'rushing_twopta', 0), (u'rushing_lng', -1), (u'rushing_yds', -1), (u'rushing_att', 1), (u'rushing_twoptm', 0)])

因为它是一个字典,所以您需要[]。例如:

^{pr2}$

因为您描述了一个不同的函数,所以您并没有调用您认为是的函数。在

相关问题 更多 >