Обобщение с использованием словаря - PullRequest
0 голосов
/ 11 сентября 2018

Я хочу улучшить и сократить следующую функцию, используя словарь:

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 Ответ

0 голосов
/ 11 сентября 2018
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}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...