Python3迁移:TypeError:无法比较类型:dict() < int()

2 投票
2 回答
4812 浏览
提问于 2025-04-17 08:53

我有一段代码在 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 个回答

10

你的代码在Python 2中也是“错误”的。把字典和整数进行比较是没有意义的。这就像问一个颜色是否比一个数字大,根本就说不通。

Python 2允许不同类型之间这样比较,并且总是会说字典比数字大,这种说法是随意的。甚至一个空字典也被认为比数字大:

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

这样的比较毫无意义,而Python 3则会正确地抛出一个错误,实际上是在说“我不知道你在说什么”,这样更好,避免了错误的比较。

2

dist 不是一个“数字的字典”,而是一个“字典的字典”,里面包含了数字。你的代码在 2.x 版本中也应该是不能工作的。

撰写回答