基于另一本字典的布尔创建词典列表的最pythonic方法

时间:2020-01-16 16:43:19

标签: python list-comprehension dictionary-comprehension

这是我的情况-我有一本字典:

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

然后,我在其他地方定义了另外三个dict,就像我们导入的一样,所以它们作为变量存在于模块的命名空间中。

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

现在,我想基于上述字典的布尔值创建一个包含这些dict的列表。

我当前的解决方案是:

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)

我只是想知道是否还有一种更Python化的方式-这很可读,但不是很干。

1 个答案:

答案 0 :(得分:2)

您可以使用另一本词典将导入的词典与相应的键相关联:

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]]
相关问题