python - 如何创建一个包含两个列表的字典,以最少的查询次数保留第一个列表的顺序?

标签 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 模板中使用。

最佳答案

您可以使用像

这样的字典
# 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/

相关文章:

django - 如何在 Django 中测试空查询集?

python - 在 AWS EC2 上部署 django 应用程序时无法在端口 80 上运行 gunicorn

python - Pandas 中的字典列表

python - 创建一组的所有组合并耗尽内存

python - 如何在 python 中获取 selenium chrome web 驱动程序中的状态代码

python - 如何使用python从日志文件中获取特定数据

python - 将特定日期作为默认日期时间添加到 Django 中的 DateTimeField

.Net core字典中的Mongodb $inc运算符

c# - 在 C# 中使用 LINQ 反转字典

python - 在C中嵌入python, undefined symbol : PyExc_ImportError