假设我在 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 模板中使用。
最佳答案
您可以使用像
这样的字典# 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]
这样您将按照您给出的顺序获得对象。
关于python - 如何创建一个包含两个列表的字典,以最少的查询次数保留第一个列表的顺序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9288075/