嗨,我正在使用Python中的sorted()函数来排序一个二维数组(我想像在经典的电子表格中那样对列进行排序)。在
在下面的示例中,我使用itemgetter(0)根据第一列的内容对网格进行排序。在
但是sorted在非空字符串之前返回空字符串。在
>>> import operator
>>> res = [['charly','male','london'],
... ['bob','male','paris'],
... ['alice','female','rome'],
... ['','unknown','somewhere']]
>>> sorted(res,key=operator.itemgetter(0))
[['', 'unknown', 'somewhere'], ['alice', 'female', 'rome'], ['bob', 'male', 'paris'], ['charly', 'male', 'london']]
>>>
我需要它来归还这个:
^{pr2}$有简单的方法吗?在
使用不同的按键功能。一个可行的方法是:
然后,键是一个第一个位置为0(False)或1(True)的元组,其中True表示记录中的第一项为空。第二个位置有原始记录中的name字段。Python将首先对非空名称和空名称进行分组,然后在非空名称gorup中按名称排序。(Python也将按空白名称组中的名称排序,但由于名称为空,所以不会做任何事情。)
我还冒昧地将名称排序转换为键中的小写,从而使名称排序不区分大小写。在
只是用“ZZZZZ”或“字母高”来替换空白名称是很诱人的,但是第一次有些小丑把他们的名字称为“ZZZZZZZ”是不可能的。我想像
'\xff' * 100
这样的东西可以工作,但它仍然感觉像是一个黑客(也是潜在的Unicode陷阱)。在可以传递键函数,返回实际值,如果第一个元素为空(空字符串的值为
False
),则返回100'z。在这是可行的,尽管有点冗长:
相关问题 更多 >
编程相关推荐