Обернуть несколько списков, возвращаемых функцией в Dict или namedTuple (Python) - PullRequest
0 голосов
/ 03 мая 2019

У меня есть функция, которая должна возвращать несколько списков. Я прочитал в этом посте , а также здесь , что возвращение нескольких параметров предпочтительно выполняется с помощью именованных кортежей. Однако я не уверен, как лучше всего обрабатывать списки в именованных кортежах.

Таким образом, я придумал два решения, либо

def return_named_tuple(someList):
    retTuple = namedTuple('retTuple',['featA', 'featB'])
    featALst = []
    featBLst = []
    for el in someList:
        featALst.append(some_operation_on_el(el))
        featBLst.append(another_operation_on_el(el))
   return retTuple(featALst, featBLst)

или

def return_dict_with_lsts(someList):
    retDct = {'featA':[], 'featB':[]}
    for el in someList:
        retLst['featA'].append(some_operation_on_el(el))
        retLst['featB'].append(another_operation_on_el(el))
    return retDct

Итак, есть ли причина (память, производительность, шаблоны проектирования и т. Д.) Отдавать предпочтение одному решению другому? Первое решение обычно рекомендуется, но (учитывая больше возможностей) второе решение выглядит короче и, следовательно, лучше.

...