Python3迁移:TypeError:无法比较类型:dict() < int()
我有一段代码在 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 版本中也应该是不能工作的。