Вложено для цикла по объектам, который возвращает уникальную пару ключ-значение dict - PullRequest
0 голосов
/ 24 марта 2019

Возможно, заголовок сбивает с толку, но вот моя проблема.

Я рассматриваю объекты модели django с вложенным циклом for, как показано ниже.В конце я хочу получить словарь, в котором есть уникальные пары ключ-значение.

Ниже код работает, но я не чувствую, что он действительно эффективен.

settings = []
for feature in features:
    for setting in feature.settings.all():
        settings.append({"name": setting.name, "active": setting.active})
return [dict(t) for t in {tuple(setting.items()) for setting in settings}]

, поэтому перед возвратом у менякак-то так: [{'name': 'x', 'active': False}, {'name': 'y', 'active': True}, {'name': 'x', 'active': False}]

но когда я вернусь, я удаляю дубликаты в списке и возвращаюсь ниже.[{'name': 'x', 'active': False}, {'name': 'y', 'active': True}]

Ответы [ 2 ]

1 голос
/ 24 марта 2019

Если вы используете postgres, вы можете использовать разные с атрибутом fields, а затем использовать значения, чтобы получить нужные настройки,

ваш код будет эквивалентен:

feature.settings.distinct('name', 'active').values('name', 'active')
0 голосов
/ 24 марта 2019

Вы можете использовать словарное понимание, если вы это имели в виду.

print({setting.name : setting.active for feature in features for setting in feature.settings.all()})

Если строка становится слишком длинной, вы можете использовать что-то вроде этого.

print({
    setting.name : setting.active
    for feature in features
    for setting in feature.settings.all()
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...