在Python中使用None获取索引的列表

时间:2017-09-20 00:54:55

标签: python python-2.7 sorting nonetype

如何在Python中使用None值获取索引来对列表进行排序?

myList=['BAT46ZFILM', 'CMD17-21VGD/TR8', 'BAT46ZFILM', None, 'B72207S2321K311']

我知道

[i[0] for i in sorted(enumerate(myList), key=lambda x:x[1])]

获取sort方法的索引。但是如何将所有None值放在最后。例如,与此解决方案合并:

sorted(myList, key=lambda x: (x is None, x))

None值排序,但没有得到索引。

3 个答案:

答案 0 :(得分:0)

将两个条件(为None和字符串值)组合成元组并按元组排序:

[i[0] for i in sorted(enumerate(myList), key=lambda x:(x[1] is None, x[1]))]

答案 1 :(得分:0)

使用

sorted(range(len(m)), key=lambda k:(m[k] is None,  m[k]))

答案 2 :(得分:0)

您实际上可以使用None(仅供参考)

进行排序
>>> sorted([11, 33, 22, None])
[None, 11, 22, 33]

如果您想通过删除None来对值进行排序:

>>> a = [11, 33, 22, None]
>>> sorted([i for i in a if i is not None])
[11, 22, 33]