下面的代码片段适用于Python2.7,但在Python 3.0上失败:
sorted_tuples = sorted(s, key=lambda result: try_numeric(result[0]))
TypeError: '<' not supported between instances of 'str' and 'int'
代码:
s = [['4', 'lookalike_trainer', '48 sheets', '12 sheets'], ['lookalike_trainer', '4 sheets', '48 sheets', '12 sheets'], ['40', '4 sheets', '48 sheets', '12 sheets']]
def try_numeric(value):
try:
return int(value, 10)
except ValueError:
return value
sorted_tuples = sorted(s, key=lambda result: try_numeric(result[0]))
答案 0 :(得分:0)
问题是有时try_numeric
返回一个整数值,有时会返回一个字符串值。是4 > "foo"
吗?你如何比较这些?问题是Python不能,所以当它试图比较它们时它会失败。 Python 2支持这种类型的比较,但在Python 3中已被删除。