如何在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
值排序,但没有得到索引。
答案 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]