我需要使用Python 3对一个列表进行排序。该列表可能包含字符串、整数、浮点数或元组等。
我目前正在尝试正确使用sort
函数,并使用key
参数,如下所示:
data.sort(key=gen_key)
...
def gen_key(self, value):
if is_number(value):
return str(value)
if isinstance(value, str):
return value
return '___' + type(value).__name__
但问题在于数字现在将以自然方式排序。虽然我希望仍将数字和浮点数按照数字和浮点数的方式进行排序,而不是将它们视为字符串。
这种行为是由return str(value)
部分引起的。但我不能返回与字符串不同的类型,因为这会引发异常。从Python 3开始,字符串不会像在Python 2中那样与数字一起排序。异常如下:
unordarable types: int() < str()
你有什么建议吗?
'A'
和13
按照什么顺序排序呢?你需要定义一个明确的排序规则。一旦完成了这个步骤,你基本上已经完成了。 - Henry Keiter