代码之家  ›  专栏  ›  技术社区  ›  George

使用字典进行概括

  •  0
  • George  · 技术社区  · 6 年前

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

    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 但我读到应该避免。 非常感谢您的帮助或建议。

    1 回复  |  直到 6 年前
        1
  •  1
  •   blue_note    6 年前
    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}