как динамически вызывать hibernate составной ключ в слюнях

Другие ответы уже предоставили лучшие альтернативные способы сделать это, но давайте посмотрим, как вы это делали, и посмотрите, что происходит.

Если я удалю некоторые вещи из вашего кода, я get:

[{} for i in movies}]

Глядя именно на это, должно быть понятно, почему словарь создается для каждого фильма. У вас есть оператор if внутри этого словаря, но поскольку он внутри, он не меняет, будет ли он создан.

Чтобы сделать это так, как вы это делали, вы бы по существу, нужно дважды проверить, что первая проверка не имеет значения:

[
   { k:v for (k,v) in i.items() if i.get("imdb") > 5.5 } for i in movies if i.get("imdb") > 5.5 
]

, которая может быть упрощена только до

[
   { k:v for (k,v) in i.items()} for i in movies if i.get("imdb") > 5.5
]

, и теперь, поскольку мы не меняем элемент, просто :

[
   i for i in movies if i.get("imdb") > 5.5
]
0
задан Suraj Kumar 19 January 2019 в 07:09
поделиться