Python3移植:TypeError:unorderable类型:dict()< INT()

时间:2011-12-23 07:50:55

标签: python python-3.x porting

我有这段代码在python 2.7中正常工作。 “dist”是一个数字字典,“min_dist”只是一个数字。

for v in vertices:
    if dist[v.node_id] < min_dist:
        min_dist = dist[v.node_id]
        cur_min = v

现在我试图在python 3.2下运行它,它给了我这个错误:

    if dist[v.node_id] < min_dist:
TypeError: unorderable types: dict() < int()

我在python 3.2中的代码出了什么问题?

2 个答案:

答案 0 :(得分:10)

您的代码在Python 2中也是“错误的”。将字典与整数进行比较是没有意义的。这就像询问颜色是否大于数字一样,这根本没有意义。

Python 2允许比较这样的不同类型,并且总是说字典大于数字,这是任意的。即使空字典大于数字:

>>> import sys
>>> {} > sys.maxint
True

这样的比较毫无意义,而Python 3反而正确地引发和错误,实际上说“我不知道你的意思”,这更好,避免错误的比较。

答案 1 :(得分:2)

dist不是“数字字典”,它是 数字字典的字典。您的代码即使在2.x中也不起作用。