python排序列表的真或假

时间:2014-06-27 14:08:37

标签: list sorting

我有一个帖子列表。每个帖子都有一个Ture或False值,用于确定帖子应该在列表中的哪个位置。真正的帖子应该在列表的开头,错误的帖子应该在最后。我怎样才能对这样的列表进行排序?例如:

posts[0].value = True
posts[1].value = False
posts[2].value = False
posts[3].value = True

应按如下方式排序: post [0],post [3],post [1],post [2]

提前致谢

2 个答案:

答案 0 :(得分:2)

你可以这样做:

posts.sort(key=lambda x: not x.value)

key用于指定自定义函数以比较列表中的项目。该函数切换value因为在Python False< True

答案 1 :(得分:2)

这比排序更分组,因为第一个操作是O(n),另一个是O(n * logn);

t = (i for i in posts if i.value)
f = (i for i in posts if not i.value)
list(itertools.chain(t, f))