Tôi có một từ điển Python và tôi muốn tạo ra một cây từ nó. Từ điển là một cái gì đó như thế này:
Nội dung chính ShowShow
- Tìm hiểu về cây và cách thực hiện chúng.
- Mà không cần chỉ định
- Lặp đi lặp lại
- Sự kết luận
- Làm thế nào để bạn tạo một danh sách cây trong Python?
- Có phải cây là một từ điển trong Python?
- Bạn có thể biến một từ điển thành một python danh sách không?
- Bạn có thể biến một từ điển thành một chuỗi không?
Nội phân Chính showShowShow
- Tìm hiểu về cây và cách thực hiện chúng.
- Mà không cần chỉ định
- Làm thế nào để bạn tạo một danh sách cây trong Python?
- Có phải cây là một từ điển trong Python?
- Bạn có thể biến một từ điển thành một python danh sách không?
- Bạn có thể biến một từ điển thành một chuỗi không?
dict_={"2":{'parent': "1"},"1":{'parent': None},"3":{'parent': "2"}}
Nội phân Chính showShow
Trong trường hợp này, gốc là "1"
Tôi đã cố gắng sử dụng thư viện Treelib nhưng vấn đề khi tôi lặp lại từ điển và tạo một nút, cha mẹ của nó vẫn chưa được tạo. Ví dụ: nếu tôi muốn tạo một nút cho "2", cha mẹ của nó ["1"] vẫn chưa được tạo, vì vậy không thể làm được. Bất kỳ ý tưởng?Dec 23, 2018 at 14:03
1
Hỏi ngày 23 tháng 12 năm 2018 lúc 14:03Dec 23, 2018 at 14:03
from treelib import Node, Tree
dict_ = {"2": {'parent': "1"}, "1": {'parent': None}, "3": {'parent': "2"}}
added = set[]
tree = Tree[]
while dict_:
for key, value in dict_.items[]:
if value['parent'] in added:
tree.create_node[key, key, parent=value['parent']]
added.add[key]
dict_.pop[key]
break
elif value['parent'] is None:
tree.create_node[key, key]
added.add[key]
dict_.pop[key]
break
tree.show[]
Bạn có thể làm như sau, sử dụng Treelib:
1
└── 2
└── 3
Đầu ra
Ý tưởng là chỉ thêm một nút nếu cha mẹ có mặt trong cây hoặc cha mẹ làfrom treelib import Node, Tree
dict_ = {"2": {'parent': "1"}, "1": {'parent': None}, "3": {'parent': "2"}}
added = set[]
tree = Tree[]
while dict_:
for key, value in dict_.items[]:
if value['parent'] in added:
tree.create_node[key, key, parent=value['parent']]
added.add[key]
dict_.pop[key]
break
elif value['parent'] is None:
tree.create_node[key, key]
added.add[key]
dict_.pop[key]
break
tree.show[]
5. Khi cha mẹ là from treelib import Node, Tree
dict_ = {"2": {'parent': "1"}, "1": {'parent': None}, "3": {'parent': "2"}}
added = set[]
tree = Tree[]
while dict_:
for key, value in dict_.items[]:
if value['parent'] in added:
tree.create_node[key, key, parent=value['parent']]
added.add[key]
dict_.pop[key]
break
elif value['parent'] is None:
tree.create_node[key, key]
added.add[key]
dict_.pop[key]
break
tree.show[]
5 thêm nó dưới dạng gốc.Dec 23, 2018 at 14:15Đã trả lời ngày 23 tháng 12 năm 2018 lúc 14:15Dec 23, 2018 at 14:15Dani Mesejo
Dani Mesejodani MesejoDani Mesejo6 gold badges45 silver badges68 bronze badges
58.5K6 Huy hiệu vàng45 Huy hiệu bạc68 Huy hiệu Đồng6 gold badges45 silver badges68 bronze badges
from collections import defaultdict
d = defaultdict[list] # parent: List[children]
for k, v in dict_.items[]:
d[v['parent']].append[k]
Bạn có thể làm như sau. Đầu tiên, chuyển đổi cấu trúc dữ liệu thành ánh xạ của cha mẹ con:
root = d[None][0]
tree = Tree[]
tree.create_node[root, root]
Sau đó, bắt đầu với gốc
agenda, seen = [root], set[[root]]
while agenda:
nxt = agenda.pop[]
for child in d[nxt]:
tree.create_node[child, child, parent=nxt]
if child not in seen:
agenda.append[child]
seen.add[child]
Tạo cây từ trên cùng:Dec 23, 2018 at 14:19
user2390182user2390182user2390182user2390182
Đã trả lời ngày 23 tháng 12 năm 2018 lúc 14:19Dec 23, 2018 at 14:196 gold badges60 silver badges82 bronze badges
Tìm hiểu về cây và cách thực hiện chúng.
68.6K6 Huy hiệu vàng60 Huy hiệu bạc82 Huy hiệu đồng6 gold badges60 silver badges82 bronze badges
Rễ
Một cây như một cấu trúc dữ liệu có thể nhanh chóng trở thành một môn toán học phức tạp [kiểm tra wiki], chúng ta được bao quanh bởi những thứ thực và ảo [thực sự dữ liệu] có thể được mô hình hóa và biểu diễn bởi một cây Hiểu ngay cả ở cấp độ cơ bản.
def tree[]: return defaultdict[tree]
Sử dụng DefaultDict tích hợp của Python, chúng tôi có thể dễ dàng xác định cấu trúc dữ liệu cây:
Đó là nó!
Nó chỉ đơn giản nói rằng một cây là một dict có giá trị mặc định là cây.
from treelib import Node, Tree
dict_ = {"2": {'parent': "1"}, "1": {'parent': None}, "3": {'parent': "2"}}
added = set[]
tree = Tree[]
while dict_:
for key, value in dict_.items[]:
if value['parent'] in added:
tree.create_node[key, key, parent=value['parent']]
added.add[key]
dict_.pop[key]
break
elif value['parent'] is None:
tree.create_node[key, key]
added.add[key]
dict_.pop[key]
break
tree.show[]
7][Nếu bạn đang theo dõi ở nhà, hãy đảm bảo
.
JSON-esque
Ví dụ
from treelib import Node, Tree
dict_ = {"2": {'parent': "1"}, "1": {'parent': None}, "3": {'parent': "2"}}
added = set[]
tree = Tree[]
while dict_:
for key, value in dict_.items[]:
if value['parent'] in added:
tree.create_node[key, key, parent=value['parent']]
added.add[key]
dict_.pop[key]
break
elif value['parent'] is None:
tree.create_node[key, key]
added.add[key]
dict_.pop[key]
break
tree.show[]
0Bây giờ chúng ta có thể tạo ra các từ điển lồng nhau của JSON-esque mà không cần tạo ra các từ điển phụ, họ đã tồn tại một cách kỳ diệu khi chúng ta tham khảo chúng:
Chúng tôi có thể in cái này dưới dạng JSON vớiMà không cần chỉ định
from treelib import Node, Tree
dict_ = {"2": {'parent': "1"}, "1": {'parent': None}, "3": {'parent': "2"}}
added = set[]
tree = Tree[]
while dict_:
for key, value in dict_.items[]:
if value['parent'] in added:
tree.create_node[key, key, parent=value['parent']]
added.add[key]
dict_.pop[key]
break
elif value['parent'] is None:
tree.create_node[key, key]
added.add[key]
dict_.pop[key]
break
tree.show[]
8 và chúng tôi nhận được dự kiến:from treelib import Node, Tree
dict_ = {"2": {'parent': "1"}, "1": {'parent': None}, "3": {'parent': "2"}}
added = set[]
tree = Tree[]
while dict_:
for key, value in dict_.items[]:
if value['parent'] in added:
tree.create_node[key, key, parent=value['parent']]
added.add[key]
dict_.pop[key]
break
elif value['parent'] is None:
tree.create_node[key, key]
added.add[key]
dict_.pop[key]
break
tree.show[]
2from treelib import Node, Tree
dict_ = {"2": {'parent': "1"}, "1": {'parent': None}, "3": {'parent': "2"}}
added = set[]
tree = Tree[]
while dict_:
for key, value in dict_.items[]:
if value['parent'] in added:
tree.create_node[key, key, parent=value['parent']]
added.add[key]
dict_.pop[key]
break
elif value['parent'] is None:
tree.create_node[key, key]
added.add[key]
dict_.pop[key]
break
tree.show[]
3Chúng ta thậm chí có thể tạo cấu trúc mà không có bài tập nào cả, vì chỉ tham khảo một mục nhập tạo ra nó:
from treelib import Node, Tree
dict_ = {"2": {'parent': "1"}, "1": {'parent': None}, "3": {'parent': "2"}}
added = set[]
tree = Tree[]
while dict_:
for key, value in dict_.items[]:
if value['parent'] in added:
tree.create_node[key, key, parent=value['parent']]
added.add[key]
dict_.pop[key]
break
elif value['parent'] is None:
tree.create_node[key, key]
added.add[key]
dict_.pop[key]
break
tree.show[]
0Lần này chúng tôi sẽ yêu cầu chúng tôi chuyển đổi sang tiêu chuẩn trước tiên:
from treelib import Node, Tree
dict_ = {"2": {'parent': "1"}, "1": {'parent': None}, "3": {'parent': "2"}}
added = set[]
tree = Tree[]
while dict_:
for key, value in dict_.items[]:
if value['parent'] in added:
tree.create_node[key, key, parent=value['parent']]
added.add[key]
dict_.pop[key]
break
elif value['parent'] is None:
tree.create_node[key, key]
added.add[key]
dict_.pop[key]
break
tree.show[]
9:from treelib import Node, Tree
dict_ = {"2": {'parent': "1"}, "1": {'parent': None}, "3": {'parent': "2"}}
added = set[]
tree = Tree[]
while dict_:
for key, value in dict_.items[]:
if value['parent'] in added:
tree.create_node[key, key, parent=value['parent']]
added.add[key]
dict_.pop[key]
break
elif value['parent'] is None:
tree.create_node[key, key]
added.add[key]
dict_.pop[key]
break
tree.show[]
1Bây giờ chúng ta có thể tạo ra cấu trúc với
Lặp đi lặp lại
Vì vậy, các cấu trúc cơ sở mà chúng tôi tham khảo bây giờ tồn tại như các dicts, với các dicts trống ở lá.
Cây này có thể thú vị khi lặp đi bộ, một lần nữa bởi vì cấu trúc ra đời đơn giản bằng cách đề cập đến nó.
from treelib import Node, Tree
dict_ = {"2": {'parent': "1"}, "1": {'parent': None}, "3": {'parent': "2"}}
added = set[]
tree = Tree[]
while dict_:
for key, value in dict_.items[]:
if value['parent'] in added:
tree.create_node[key, key, parent=value['parent']]
added.add[key]
dict_.pop[key]
break
elif value['parent'] is None:
tree.create_node[key, key]
added.add[key]
dict_.pop[key]
break
tree.show[]
2Ví dụ: giả sử chúng ta đang phân tích danh sách các động vật mới để thêm vào phân loại của chúng ta ở trên, vì vậy chúng ta muốn gọi một chức năng như:
from treelib import Node, Tree
dict_ = {"2": {'parent': "1"}, "1": {'parent': None}, "3": {'parent': "2"}}
added = set[]
tree = Tree[]
while dict_:
for key, value in dict_.items[]:
if value['parent'] in added:
tree.create_node[key, key, parent=value['parent']]
added.add[key]
dict_.pop[key]
break
elif value['parent'] is None:
tree.create_node[key, key]
added.add[key]
dict_.pop[key]
break
tree.show[]
3Chúng ta có thể thực hiện điều này đơn giản như:
from treelib import Node, Tree
dict_ = {"2": {'parent': "1"}, "1": {'parent': None}, "3": {'parent': "2"}}
added = set[]
tree = Tree[]
while dict_:
for key, value in dict_.items[]:
if value['parent'] in added:
tree.create_node[key, key, parent=value['parent']]
added.add[key]
dict_.pop[key]
break
elif value['parent'] is None:
tree.create_node[key, key]
added.add[key]
dict_.pop[key]
break
tree.show[]
4Sự kết luận
Một lần nữa, chúng tôi không bao giờ gán cho từ điển, nhưng chỉ bằng cách tham chiếu các khóa chúng tôi đã tạo ra cấu trúc mới của mình:
Điều này có lẽ không hữu ích lắm và nó tạo ra một số mã bối rối [xem1
└── 2
└── 3
0 ở trên].Nhưng nếu bạn thích Python thì tôi hy vọng điều này thật thú vị khi nghĩ về hoặc đáng để hiểu.
Làm thế nào để bạn tạo một danh sách cây trong Python?
Có phải cây là một từ điển trong Python?.
Examples:.
Bạn có thể biến một từ điển thành một python danh sách không?
Bạn có thể biến một từ điển thành một chuỗi không?
Có phải cây là một từ điển trong Python?
Bạn có thể biến một từ điển thành một python danh sách không?. Each node of the tree will be a dictionary that has two keys. The first key is the string "value", which maps to the value in the node.
Bạn có thể biến một từ điển thành một python danh sách không?
Bạn có thể biến một từ điển thành một chuỗi không?The items[] method basically converts a dictionary to a list along with that we can also use the list[] function to get a list of tuples/pairs.The items[] method basically converts a dictionary to a list along with that we can also use the list[] function to get a list of tuples/pairs.
Bạn có thể biến một từ điển thành một chuỗi không?
Trong trường hợp này, gốc là "1". This method can be used if the dictionary's length is not too big. The str[] method of Python is used to convert a dictionary to its string representation.. This method can be used if the dictionary's length is not too big. The str[] method of Python is used to convert a dictionary to its string representation.