遇到一个奇怪的要求......
假设我有这样的模型:
class MyModel(models.Model):
priority = models.IntegerField()
time = models.DateTimeField()
假设我们有:
by_time = MyModel.objects.order_by('time')
by_prio = MyModel.objects.order_by('priority')
我需要使用交替排序顺序显示项目。例如。 1个项目按时间排序,1个按优先级排序,下一个按时间排序等等...每个项目在列表中都必须是唯一的(不能将两个列表加入两个更长的列表中)。 / p>
我如何实现这样的事情并保持相对高效?
编辑: 几点说明:
答案 0 :(得分:1)
您可以通过这种方式组合这两个列表:
>>> result = [None]*(len(by_time)+len(by_prio))
>>> result[::2] = by_time
>>> result[1::2] = by_prio
>>> result = [result.pop(i) for i in range(len(result))[::-1] if result.count(result[i]) > 1 ]