【问题标题】:most pythonic way to create list of dictionaries based on bool of another dictionary基于另一个字典的布尔值创建字典列表的最pythonic方法
【发布时间】:2020-01-16 16:43:19
【问题描述】:

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

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

然后我在其他地方定义了另外三个dicts,我们想象一下我们导入了它们,因此它们作为变量存在于模块的命名空间中。

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

现在,我想根据上面字典的布尔值创建一个包含 dicts 的列表。

我目前的解决方案是:

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)

我只是想知道是否有更 Pythonic 的方式 - 这是非常可读但不是很干燥。

【问题讨论】:

    标签: python list-comprehension dictionary-comprehension


    【解决方案1】:

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

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

    【讨论】:

    • 可能值得指出的是,在 Python params_ls 的顺序并不能保证,如果重要的话。
    猜你喜欢
    • 1970-01-01
    • 2016-10-05
    • 2012-12-24
    • 2020-10-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多