python -3: имя объекта в виде строки - PullRequest
1 голос
/ 28 мая 2020

У меня есть две следующие таблицы:

"table1":

a x1
b y1

"table2":

a x2
b y2

Я хочу открыть их и создать следующий словарь:

{"table1": {"a": ["x1"]}, {"b": ["y1"]}, \
 "table2": {"a": ["x2"]}, {"b": ["y2"]}}

Для этого я в настоящее время делаю следующее:

with open("table1", "r") as table1, \
    open("table2", "r") as table2:

    dictionary = {"table1": {}, \
                "table2": {}}

    for line in table1:

        col1 = line.split(" ")[0]
        col2 = line.split(" ")[1].strip()

        dictionary["table1"][col1] = col2

    for line in table2:

        col1 = line.split(" ")[0]
        col2 = line.split(" ")[1].strip()

        dictionary["table2"][col1] = col2

print(dictionary)

{'table1': {'a': 'x1', 'b': 'y1'}, 'table2': {'a': 'x2', 'b': 'y2'}}

Мой вопрос: как связать имя открытой таблицы, например table1, в строку словарного ключа "table1"?

Примерно так (не правильно):

with open("table1", "r") as table1, \
    open("table2", "r") as table2:

    dictionary = dict()

    for table in [table1, table2]:

        for line in table: 

            col1 = line.split(" ")[0]
            col2 = line.split(" ")[1].strip()

            dictionary[table][col1] = col2    # HERE I WANT table TO BE "table1", NOT THE OBJECT table1

1 Ответ

2 голосов
/ 28 мая 2020

Вы можете хранить файлы в словаре с такими же ключами другого:

table = dict()
with open("table1", "r") as table['table1'], \
    open("table2", "r") as table['table2']:

    dictionary = dict()

    for table_name in ['table1', 'table2']:

        for line in table[table_name]: 

            col1 = line.split(" ")[0]
            col2 = line.split(" ")[1].strip()

            dictionary[table_name]={col1:[col2]}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...