Python运行时错误:cmp中超过了最大递归深度

2024-04-25 09:59:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在处理一个复杂的数据结构。在

数据结构说明:我有一个类字典。关键是一个名字。该值是类引用。这个类包含两个字典列表。在

下面是我的数据结构的一个简单示例:

import scipy.stats

class employee_salaries(object):
    def __init__(self,management, players, disparity):
        self.management = management
        self.players = players
        self.disparity = disparity

# the coach's salary was 12 his 1st year and 11 his 2nd year
mgmt1 = [{'Coach':12, 'Owner':15, 'Team Manager': 13}, {'Coach':11, 'Owner':14, 'Team Manager':15}]
plyrs1 = [{'Point Guard': 14, 'Power Forward':16,},{'Point Guard':16, 'Power Forward':18}]

NBA = {}

mgmt2 = [{'Coach':10, 'Owner':12}, {'Coach':13,'Owner':15}]
plyrs2 = [{'Point Guard':17, 'Power Forward':14}, {'Point Guard': 22, 'Power Forward':16}]

NBA['cavs'] = employee_salaries(mgmt1,plyrs1,0)
NBA['celtics'] = employee_salaries(mgmt2,plyrs2,0)

假设我想确定这两年控球后卫的薪水和老板的薪水之间的差距。在

^{pr2}$

记住这不是我的真实数据。在我实际的数据结构中,有超过150个键。字典列表中还有更多的元素。当我在实际数据上运行上面的代码时,我得到一个运行时错误。在

RuntimeError: maximum recursion depth exceeded in cmp error.

我怎样才能改变上面的代码,使它不给我一个最大递归深度错误?我想做这种类型的比较,并能够保存价值。在


Tags: self数据结构字典employeemanagementpointforwardpower
1条回答
网友
1楼 · 发布于 2024-04-25 09:59:19

It's a bug.

Fixed in 0.15.0

您传入的是空数组,函数处理错误。更新Scipy,或者在数组为空时跳过(不过要检查数据是否正确,以及有空数组是否有意义)。在


对代码的一些建议。在

for team in NBA.itervalues():
#Or `for name, team in NBA.iteritems()` if you use the name.
    x1, x2 = [], []
    # Not `x1 = x2 = []`, since that would be two names for one list

    for player, manager in izip(team.players, team.management):
        x1.append(player['Point Guard'])
        x2.append(manager['Owner'])
    # Or lose the `for` loop and say:
    # `x1 = [player['Point Guard'] for player in team.players]`
    # `x2 = [manager['Owner'] for manager in team.management]`
    # (This can be more efficient.)

    tau, p_value = scipy.stats.kendalltau(x1, x2)

    team.disparity = tau

print NBA['cavs'].disparity

相关问题 更多 >

    热门问题