Я создал функцию, которая просматривает любую гибридную структуру данных dict
/ list
и печатает ее, используя рекурсию (потому что это более эффективно и увлекательно). Проблема в том, что после вызова он уничтожает переменную своего параметра.
И не только переменная параметра, но и любая другая подструктура отца / сына:
Father variable: Son = Father
Son variable: InheritSonSecondLevel = Son
Если я вызову свою функцию как Func(Son)
или Func(Father)
или Func(InheritSonSecondLevel)
, все содержимое структуры будет уничтожено. Там не так много, я могу попробовать.
Я использую эту гибридную структуру данных.
Давайте назовем это: гибрид.
Это внутри for
.
hybrid = functionX()
Поскольку printRecursiveDictionary()
убьет мой контент, я называю это в конце.
И создайте list
на основе содержимого гибрида. Что-то вроде:
fullContent=fullContent+[["A Label",hybrid]]
Тогда printRecursiveDictionary()
вызывается. for
заканчивается, и я использую fullContent()
для чего-то. Тогда, к удивлению, остается только матрица с метками и пустыми словарями.
def printRecursiveDictionary(dictionary,deepness=0):
if(isinstance(dictionary,list) and dictionary!=[]):
if(isinstance(dictionary[0],dict) or
isinstance(dictionary[0],list)):
print("A")
printRecursiveDictionary(dictionary[0],deepness+1)
else:
print("B")
print("\t"*deepness,dictionary[0])
printRecursiveDictionary(dictionary[1:],deepness)
elif(isinstance(dictionary,dict) and dictionary!={}):
if(isinstance(list(dictionary.values())[0],dict) or
isinstance(list(dictionary.values())[0],list)):
print("C")
print("\t"*deepness+str(list(dictionary.keys())[0]))
printRecursiveDictionary(
list(dictionary.values())[0],
deepness+1
)
else:
print("D")
print("\t"*deepness+str(list(dictionary.keys())[0])+":"+str(list(dictionary.values())[0]))
dictionary.pop(list(dictionary.keys())[0])
printRecursiveDictionary(dictionary,deepness)
x=[0,{1:1,2:2,3:3}]
print(x)
y = x
print(y)
printRecursiveDictionary(y)
print(y)
print(x)
Результат будет:
[0, {1: 1, 2: 2, 3: 3}]
[0, {1: 1, 2: 2, 3: 3}]
B
0
A
D
1:1
D
2:2
D
3:3
[0, {}]
[0, {}]