python - 使用字典进行泛化
问题描述
我想使用字典改进和缩短以下功能:
def loop_solution(filename1=None,filename2=None,filename3=None,filename4=None):
if (filename1!=None): im1=import_file_astro(filename1)
if (filename2!=None): im2=import_file_astro(filename2)
if (filename3!=None): im3=import_file_astro(filename3)
if (filename4!=None): im4=import_file_astro(filename4)
我想过使用以下片段:
mydic={'im'+str(i):import_file_astro(filename1) for i in range(1,5) if filename1!=None}
但当然我需要一种方法来循环遍历filename
s. 我曾想过使用exec
,但我读过应该避免使用它。非常感谢任何帮助或建议。
解决方案
def loop_solution(filenames):
files = {}
for index, filename in enumerate(filenames, start=1):
if filename is not None:
files['im' + str(index)] = import_file_astro(filename)
或者,如果您希望将其作为 dict 理解
def loop_solution(filenames):
return {'im'+str(index): import_file_astro(filename) for index, filename in enumerate(filenames, start=1) if filename is not None}