使用字典泛化

我想使用字典改进和缩短以下功能:


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)

我想过使用以下 snipet:


mydic={'im'+str(i):import_file_astro(filename1) for i in range(1,5) if filename1!=None}

但当然我需要一种方法来遍历filenames。我想过使用,exec但我读过应该避免使用。非常感谢任何帮助或建议。


阿波罗的战车
浏览 152回答 1
1回答

慕仙森

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)或者,如果你想要它作为一个字典理解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}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python