Как я могу создать словарь из двух списков, который сохраняет порядок первого списка в минимальном количестве запросов? - PullRequest
1 голос
/ 15 февраля 2012

Допустим, у меня есть список идентификаторов фильмов в QuerySet в следующем формате:

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 Ответ

2 голосов
/ 15 февраля 2012

Вы можете использовать dict как

# 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]

Таким образом, вы получите объект в том же порядке, который вы дали.

...