Python3中的cmp问题

时间:2013-12-28 17:47:07

标签: python-3.x typeerror cmp

我使用的是开源Python代码。我认为它是为Python 2编写的,当我在Python3.3中运行时,我得到了这个错误:

TypeError: must use keyword argument for key function

指向这些代码行:

probs = [(word, pool[word]) for word in words if word in pool]
probs.sort(lambda x,y: cmp(y[1],x[1]))

代码的类似部分:

       for pname, pprobs in pools.items():
        p = self.getProbs(pprobs, tokens)
        if len(p) != 0:
            res[pname] = self.combiner(p, pname)
    res = res.items()
    res.sort(lambda x,y: cmp(y[1], x[1]))

给出了同样的错误。

我是Python的初学者,所以如果有人能告诉我应该如何更改代码,我感激不尽。

1 个答案:

答案 0 :(得分:1)

cmp已被贬低。请改用key

probs = [(word, pool[word]) for word in words if word in pool]
probs.sort(key=lambda x: x[1])