Most Pythoni c способ создания списка словарей на основе bool другого словаря - PullRequest
1 голос
/ 16 января 2020

Вот моя ситуация - у меня есть словарь:

dic = {"al" : False,
       "ol" : True,
       "psc": True,
       "cp" : False}

Затем у меня есть три других dict, определенных где-то еще, которые мы просто представим, что мы импортировали, поэтому они существуют как переменные в пространстве имен модуля.

 appointmentslist_params  # al 
 officerlist_params       # ol
 psc_params               # psc
 companyprofile_params    # cp

Теперь я хочу создать список, содержащий эти dict s, основанные на bool из вышеизложенного.

Мое текущее решение:

params_ls = []
if dic["ol"]:
    params_ls.append(officerlist_params)
if dic["psc"]:
    params_ls.append(psc_params)
if dic["al"]:
    params_ls.append(appointmentslist_params)
if dic["cp"]:
    params_ls.append(companyprofile_params)

Мне было просто интересно, есть ли способ Pythoni c - это очень читабельно, но не очень DRY.

1 Ответ

2 голосов
/ 16 января 2020

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

d1 = {'al':appointmentslist_params, 'ol':officerlist_params, 'psc':psc_params, 'cp':companyprofile_params}
dic = {"al" : False,
   "ol" : True,
   "psc": True,
   "cp" : False}

params_ls = [b for a, b in d1.items() if dic[a]]
...