Saya membuat pohon dengan perpustakaan pohon apa pun. Saya ingin dapat memodifikasinya, lalu mengekspor - menyimpannya ke disk, dan mengimpornya kembali dengan modifikasinya. Misalnya, contoh pohon:
udo = Node("Udo")
marc = Node("Marc", parent=udo)
lian = Node("Lian", parent=marc)
dan = Node("Dan", parent=udo)
jet = Node("Jet", parent=dan)
jan = Node("Jan", parent=dan)
joe = Node("Joe", parent=dan)
Udo
├── Marc
│ └── Lian
└── Dan
├── Jet
├── Jan
└── Joe
Saya bisa memodifikasinya, misalnya memotong Dan dan menambahkan anak ke Marc
dan.parent = None
bonny = Node ("Bonny", parent = marc)
Udo
└── Marc
├── Lian
└── Bonny
Tetapi ketika saya mengekspor pohon ke json dan kemudian mengimpornya kembali, satu-satunya node yang dapat saya referensikan adalah root. Jadi saya tidak bisa melakukan modifikasi seperti ini lagi karena nama variabel seperti dan
atau marc
tidak ada, yaitu saya tidak menemukan cara untuk mereferensikan sebuah node. Apakah saya melewatkan sesuatu?
with open ('cajon/anytreeexample.json', 'r+', encoding = 'utf-8') as f:
datos = importer.read(f)
print (datos)
Artinya setelah mengimpor pohon yang Anda miliki hanyalah simpul akar
AnyNode(name='Udo') # Udo is the root
Dari sini Anda bisa mendapatkan anak-anak Udo, dan anak-anak suka
marc, dan = udo.children
lian = marc.children
jet, jan, joe = dan.children
Tapi mereka tidak bekerja sebagai sebuah node
print (lian.parent)
AttributeError: 'tuple' object has no attribute 'parent'
Dan sepertinya Anda tidak dapat melampirkan anak-anak ke dalamnya, itulah tujuan utama saya dengan struktur ini:
sonny = AnyNode("Sonny", parent = lian)
TypeError: __init__() got multiple values for argument 'parent'
Jadi pertanyaan saya adalah, apakah ada cara untuk memuat pohon json yang disimpan ke dalam struktur pohon apa pun yang tepat, tempat Anda dapat menambahkan node baru?
variable = value
, tidak ada cara lain. Juga sepertinya ada yang tidak berfungsi karena node.children
mengembalikan tuple, bukan node. Dan sepertinya saya juga tidak tahu cara menambah anak. Bagaimana kalausonny = Node("Sonny", parent = dan)
? - person Stop harming Monica   schedule 18.08.2018.children
selalu mengembalikan sejumlah node, mengekspor tidak ada hubungannya dengan itu. Untuk menambahkannewnode
di bawahnodeX
, dengan asumsinewnode
dannodeX
adalah node, cukup lakukannewnode.parent = nodeX
. - person Stop harming Monica   schedule 18.08.2018,
- person Fabian N.   schedule 18.08.2018