基于另一个字典的 bool 创建字典列表的最 pythonic 方式
most pythonic way to create list of dictionaries based on bool of another dictionary
这是我的情况 - 我有一本字典:
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)
我只是想知道是否有更 pythonic 的方式 - 这非常可读但不是很干。
您可以使用另一个词典将导入的词典与相应的键相关联:
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]]
这是我的情况 - 我有一本字典:
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)
我只是想知道是否有更 pythonic 的方式 - 这非常可读但不是很干。
您可以使用另一个词典将导入的词典与相应的键相关联:
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]]