如何创建两个列表的字典,以保留最少查询数量中第一个列表的顺序?

时间:2012-02-15 04:56:13

标签: python django dictionary django-queryset

假设我在QuerySet中有一个电影ID列表,格式如下:

movie_ids = [12,4,9,16]

现在,我想拉出相应电影的列表。我还想尽量减少查询次数。所以我做了以下几点:

movies = Movie.objects.filter(pk__in=movie_ids)

然而,这个查询不能保证电影的对应电影对象的顺序与movie_ids中的相同,是吗?无论如何都要保证顺序(以便每个movie_id对应正确的电影)所以我可以做两件事将两个列表配对到一个字典中:

id_movies = dict(zip(movie_ids, movies))

然后将在我的Django模板中使用。

1 个答案:

答案 0 :(得分:2)

你可以使用像

这样的字典
# Create the dict for the movies object.
id_movies = dict([(m.id, m) for m in movies])

# Get the data in order.
order_movies = [id_movies[i] for i in movie_ids]

这样你就可以按照你给出的顺序得到对象。