Как создать / прочитать вложенный словарь из файла? - PullRequest
0 голосов
/ 29 февраля 2020

Вот текстовое содержимое file1

name = test1,description=None,releaseDate="2020-02-27"
name = test2,description=None,releaseDate="2020-02-28"
name = test3,description=None,releaseDate="2020-02-29"

Я хочу вложенный словарь , подобный этому. Как создать это?

{ 'test1': {'description':'None','releaseDate':'2020-02-27'},
  'test2': {'description':'None','releaseDate':'2020-02-28'},
  'test3': {'description':'None','releaseDate':'2020-02-29'}}

После этого я хочу добавить эти значения в следующую строку кода через "for" l oop для списка проектов.

Пример: для project="IJTP2" хотите go через каждое имя в словаре, как показано ниже

project.create(name="test1", project="IJTP2", description=None, releaseDate="2020-02-27")
project.create(name="test2", project="IJTP2", description=None, releaseDate="2020-02-28")
project.create(name="test3", project="IJTP2", description=None, releaseDate="2020-02-29")

Теперь к следующему проекту:

Список проектов сохранен в другом файле, как показано ниже

IJTP1
IJTP2
IJTP3
IJTP4

Я только начал работать над Python и никогда не работал над вложенными словарями.

1 Ответ

1 голос
/ 29 февраля 2020

Я предполагаю, что:

  • каждая строка файла имеет разделенные запятыми столбцы
  • каждый столбец имеет только один = и ключ слева, значение справа
  • только первый столбец является особым (имя)

Конечно, как упоминал @Alex Hall, я рекомендую JSON или CSV.
В любом случае, я написал код для вашего дела.

d = {}
with open('test-200229.txt') as f:
    for line in f:
        (_, name), *rest = (
            tuple(value.strip() for value in column.split('='))
            for column in line.split(',')
        )
        d[name] = dict(rest)

print(d)

вывод:

{'test1': {'description': 'None', 'releaseDate': '"2020-02-27"'}, 'test2': {'description': 'None', 'releaseDate': '"2020-02-28"'}, 'test3': {'description': 'None', 'releaseDate': '"2020-02-29"'}}
...