排序的字母数字键不能在python 3.0上运行

时间:2017-09-29 20:30:55

标签: python-2.7 python-3.x

下面的代码片段适用于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]))

1 个答案:

答案 0 :(得分:0)

问题是有时try_numeric返回一个整数值,有时会返回一个字符串值。是4 > "foo"吗?你如何比较这些?问题是Python不能,所以当它试图比较它们时它会失败。 Python 2支持这种类型的比较,但在Python 3中已被删除。