Доступ к атрибутам объекта из имени (строки) внутри списка в Python - PullRequest
0 голосов
/ 21 февраля 2019

Я запускаю скрипт на python, который генерирует несколько переменных после итерации по нескольким каталогам.После запуска сценария я хочу выполнить некоторые операции над несколькими фреймами данных, имена которых соответствуют определенному шаблону:

failed_runs_finder = re.compile(r'FAILEDRuns_') # pattern to search
list_dfs = list(filter(failed_runs_finder.findall, dir())) # puts the matching results in a list

, что дает мне список, как показано ниже:

['FAILEDRuns_0112',
 'FAILEDRuns_0121',
 'FAILEDRuns_0126',
 'FAILEDRuns_0129',
 'FAILEDRuns_0131',
 'FAILEDRuns_0134',
 'FAILEDRuns_0135',
 'FAILEDRuns_0137',
 'FAILEDRuns_0142',
 'FAILEDRuns_0153',
 'FAILEDRuns_0165',
 'FAILEDRuns_0171',
 'FAILEDRuns_0175']

Если я сейчас попытаюсь получить доступ к количеству строк и столбцов каждого элемента в list_dfs с помощью метода shape() со следующим циклом:

for i in list(filter(failed_runs_finder.findall, dir())):
    print(getattr(i, 'shape'))

, я получу:

AttributeError: 'str' object has no attribute 'shape'

Это связано с тем, что элементы list_dfs, как предполагает ошибка, строки , а не сами кадры данных.

Мой вопрос: как я могу получить доступ к самим объектам по их именам в списке?

Ответы [ 2 ]

0 голосов
/ 21 февраля 2019

Это должно сработать:

for i in list(filter(failed_runs_finder.findall, dir())):
    print(locals()[i].shape)
0 голосов
/ 21 февраля 2019

Не уверен, правильно ли я понял, что вы хотите сделать, но вы можете использовать dict для сопоставления строки с фреймом данных, что-то вроде:

{'FAILEDRuns_0112': FAILEDRuns_0112}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...