我有一个帖子列表。每个帖子都有一个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]
提前致谢
答案 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))