簡體   English   中英

類別和子類別類。 需要代碼示例

[英]Category and subcategory classes. Need code example

我有像[{id, category, parent_id},]這樣的字典類型數據集。 我需要創建 class 來解析這個數據集並創建簡單的界面來獲取父母和孩子。 我不想發明輪子,有人可以分享可以幫助我實現此任務的代碼嗎?

我試圖創建數據類,然后創建類來實現與它們一起工作的方法,但我厭倦了思考一個有能力的實現。 時間流逝,沒有結果。

from dataclasses import dataclass

@dataclass
class Node:
    id: int
    category: str
    parent_id: int

class Tree:
    def __init__(self, dataset):
        self.nodes = {d["id"]: Node(d["id"], d["category"], d["parent_id"]) for d in dataset}
        
    def get_parent(self, node_id: int) -> Node:
        return self.nodes.get(self.nodes[node_id].parent_id)
        
    def get_children(self, node_id: int) -> List[Node]:
        children = []
        for id, node in self.nodes.items():
            if node.parent_id == node_id:
                children.append(node)
        return children

這樣,你可以通過傳入你的數據集創建一個樹 object ,然后使用get_parentget_children方法分別檢索父節點和子節點。

您可以使用以下方式創建一個 class 的 object 並使用方法:

dataset = [{'id': 1, 'category': 'cat1', 'parent_id': None}, 
           {'id': 2, 'category': 'cat2', 'parent_id': 1}, 
           {'id': 3, 'category': 'cat3', 'parent_id': 2},
           {'id': 4, 'category': 'cat4', 'parent_id': 1},
           {'id': 5, 'category': 'cat5', 'parent_id': 4}]

tree = Tree(dataset)
parent = tree.get_parent(3)
childrens = tree.get_children(1)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM