largeQ
简短而甜美:sorted(data, key=lambda item: (int(item.partition(' ')[0]) if item[0].isdigit() else float('inf'), item))这个版本:适用于Python 2和Python 3,因为:它不假定您比较字符串和整数(在Python 3中不起作用)它不使用cmp参数sorted(Python 3中不存在)如果数量相等,将按字符串部分排序如果要完全按照示例中的说明打印输出,则:data = set(['booklet', '4 sheets', '48 sheets', '12 sheets'])r = sorted(data, key=lambda item: (int(item.partition(' ')[0]) if item[0].isdigit() else float('inf'), item))print ',\n'.join(r)