【发布时间】:2015-03-28 00:01:16
【问题描述】:
我有列表列表,我想按字母顺序按 4 索引对列表进行排序,但在某些情况下它不会是空的或空的,所以这些情况需要放在底部。
为了进一步澄清 - 它应该按 AaBbCc 排序,然后是 None 或者如果没问题,则为空。我只希望第一个项目不区分大小写。
from operator import itemgetter
list_of_list = [[0,1,2,3,'Ab'],[0,1,2,3,'bA'],[0,1,2,3,' '],[0,1,2,3,'None'], [0,1,2,3,''],[0,1,2,3,'Ca'] ]
list_of_list = sorted(list_of_list, key=itemgetter(4))
print list_of_list
Output: [[0, 1, 2, 3, ''], [0, 1, 2, 3, ' '], [0, 1, 2, 3, 'Ab'], [0, 1, 2, 3, 'Ca'], [0, 1, 2, 3, 'None'], [0, 1, 2, 3, 'bA']]
应该这样输出:
[[0, 1, 2, 3, 'Ab'], [0, 1, 2, 3, 'bA'],[0, 1, 2, 3, 'Ca'], [0, 1, 2, 3, 'None'], [0, 1, 2, 3, ''], [0, 1, 2, 3, ' ']]
【问题讨论】:
-
'None' 是否意味着读取 None(不带引号?)
-
两者 - 含义相同。所以要么是它的代表 None 的字符串,要么是实际的关键字 None。他们应该走到底部。
-
您可以使用
(isinstance(x[4], basestring) and x[4] != "None")来避免None字符串。
标签: list python-2.7 sorting