У вас должен быть какой-то способ получить значение переменной по имени.Вы можете вручную добавить их в dict
или использовать для этого встроенную функцию locals()
.
df_foo_1_100 = "test_1_100"
df_foo_1_1000 = "test_1_1000"
df_foo_1_10000 = "test_1_10000"
df_foo_2_100 = "test_2_100"
df_foo_2_1000 = "test_2_1000"
df_foo_2_10000 = "test_2_10000"
df_foo_4_100 = "test_4_100"
df_foo_4_1000 = "test_4_1000"
df_foo_4_10000 = "test_4_10000"
df_foo_7_100 = "other_junk" # Not included...
import itertools
index1 = ["1", "2", "4"]
index2 = ["100", "1000", "10000"]
all_index_combos = list(itertools.product(index1, index2))
all_index_variables = set(["df_foo_{0}_{1}".format(ind1, ind2) for ind1, ind2 in all_index_combos])
dfs = [var for name, var in locals().items() if name in all_index_variables]
print(dfs)
при этом выдает
['test_1_100', 'test_1_1000', 'test_1_10000', 'test_2_100', 'test_2_1000', 'test_2_10000', 'test_4_100', 'test_4_1000', 'test_4_10000']
по желанию.
Если вы хотите dict
, просто замените
dfs = [var for name, var in locals().items() if name in all_index_variables]
на
dfs = dict([(name, var) for name, var in locals().items() if name in all_index_variables])
, который выдаст:
{'df_foo_1_100': 'test_1_100', 'df_foo_1_1000': 'test_1_1000', 'df_foo_1_10000': 'test_1_10000', 'df_foo_2_100': 'test_2_100', 'df_foo_2_1000': 'test_2_1000', 'df_foo_2_10000': 'test_2_10000', 'df_foo_4_100': 'test_4_100', 'df_foo_4_1000': 'test_4_1000', 'df_foo_4_10000': 'test_4_10000'}