Я пытаюсь создать вложенный словарь из некоторых циклов for.Если мой код позиционируется так:
for figure in problem.figures:
for object in problem.figures[figure].objects:
attribute_dict_A = {}
nested_dict = {}
for k, v in problem.figures[figure].objects[object].attributes.items():
attribute_dict_A[k] = v
attribute_dict_A.update({'object': object})
nested_dict[figure] = attribute_dict_A
print(nested_dict)
, то в выводе будет показан весь цикл, повторяющийся, как показано ниже:
{'A': {'shape': 'square',' object ':' a ',' fill ':' yes ',' size ':' очень большой '}}
{' B ': {' shape ':' square ',' object':' b ',' fill ':' yes ',' size ':' очень большой '}}
{' C ': {' shape ':' square ',' object ':' c',' fill ':' yes ',' size ':' очень большой '}}
{' 1 ': {' shape ':' pentagon ',' object ':' d ',' fill':' yes ',' size ':' очень большой '}}
{' 2 ': {' shape ':' square ',' object ':' e ',' fill ':' yes',' size ':' очень большой '}}
{' 3 ': {' shape ':' triangle ',' object ':' f ',' fill ':' yes ',' size':' очень большой '}}
{' 4 ': {' shape ':' pac-man ',' object ':' g ',' fill ':' yes ',' size ':'очень большой'}}
{'5': {'shape': 'star', 'object': 'h', 'fill': 'yes', 'size': 'очень большой'}}
{'6': {'shape': 'heart', 'object': 'i', 'fill': 'yes', 'size': 'очень большой'}}
Но если мой код имеет правильный отступОтступ ed (см. 'print(nested_dict)'
) затем печатает только последнюю итерацию цикла.
Как я могу выполнить цикл для итерации, а также сохранить все, что мне нужно?
for figure in problem.figures:
for object in problem.figures[figure].objects:
attribute_dict_A = {}
nested_dict = {}
for k, v in problem.figures[figure].objects[object].attributes.items():
attribute_dict_A[k] = v
attribute_dict_A.update({'object': object})
nested_dict[figure] = attribute_dict_A
print(nested_dict)
Мой окончательный вывод выглядит так:
{'6': {'shape': 'heart', 'object': 'i', 'fill': 'yes', 'size': 'очень большой'}}
РЕДАКТИРОВАНИЕ ----
Я обновил свой код до этого, но я все еще не получаю результат, который мне нужен.Кажется, он переопределяет мой словарь каждый раз, когда он повторяет цикл.
nested_dict = {}
attribute_dict = {}
for figure in problem.figures:
for object in problem.figures[figure].objects:
for k, v in problem.figures[figure].objects[object].attributes.items():
attribute_dict[k] = v
attribute_dict.update({'object': object})
nested_dict[figure] = attribute_dict
pprint(nested_dict)
Вот пример текстового файла, который я перебираю:
Заглавная буква A - это цифра, строчная a - это объект, k, v - атрибутпара
A
a
shape:circle
size:very large
fill:no
b
shape:plus
size:small
fill:yes
angle:0
inside:a
B
c
shape:circle
size:very large
fill:no
d
shape:plus
size:small
fill:yes
angle:0
inside:c
C
e
shape:circle
size:very large
fill:no
f
shape:plus
size:small
fill:yes
angle:0
inside:e