サンズの分類と無制限のカテゴリ

A:父と息子のカテゴリー

'' ' 
サンズ分類結果
1北京0 -2-海淀1 4 - SB町2 -昌平 3上海0 -青浦 - Xujing -閔行 ' ''

data_dict = [ { " CATEGORY_ID ":1、" 名前"" 北京"" PARENT_ID " :0}、 { " CATEGORY_ID ":2、" 名称"" 上海"" PARENT_ID " :0}、 { " CATEGORY_ID ":3、" 名前"" 沙河" PARENT_ID ":1 }、 { " CATEGORY_ID ":4、" 名前"" SB镇"" PARENT_ID ":3 }、 { " CATEGORY_ID ":5、" 名前"" 昌平"" PARENT_ID ":1 }、 { " CATEGORY_ID ":6、" "" 青浦"PARENT_ID":2 } ] res_list = [] DEF FUNC(DATA_LIST、PARENT_ID = 0、レベル= 0、IS_CLEAR = TRUE): ' '' :PARAMのDATA_LIST:ソートデータに必要 :PARAM PARENT_ID:親ID関連付けられたデフォルト0から親クラスに属する :PARAMレベルを並べ替え:第1の階層レベル0をデフォルト :リターン: 「」 ' IF IS_CLEAR: 、以前の残りのデータが各サイクル毎に防止 res_list.clearを() するためのデータ DATA_LIST。 ループは、印刷データの取得 #はまずか否かを、親クラス判定 IFデータ[ PARENT_ID ] == PARENT_ID: 親クラスは、最初のレベルの表示の階層である場合は データ[ レベル ] = レベル サイクルの辞書に追加されたデータの res_list.append(データ) 第二層のサイクル.. 層上に第2層がなければなりませんしかしPARENT_ID + 1が乱れますが、カテゴリ、確かに属するれる (DATA_LIST、レベルFUNC [=レベル+ 1、PARENT_ID =データ' CATEGORY_ID ' ]、IS_CLEAR = False)が 戻りres_listの RES = FUNC(data_dict) のために I RES : 印刷" - " * I [ ' レベル' ] + I [' 名前' ])

2:無制限のカテゴリ

DEFの関数func1(DATA_LIST):
    res_data = []  リストに格納されたリストを定義するすべての返されたデータ 
    ツリー} = {    ルートのルートノードとしてツリーのような無制限の分類があり、多くの同様の支点辞書である
    ため I DATA_LIST :
        ツリーは、[I [ CATEGORY_ID  ] = Iの    #のデータループマーク記録としてIDを追加する
    ためのデータDATA_LIST:
        判断がルートノードでない
        IF  ないデータ[ PARENT_ID ]:
            それは、ルートノードでない場合カテゴリノードの下に追加されました 
            res_data.append(木[データ[ CATEGORY_ID ]])
         ルートノードが子ノードがあるかどうかを判断された場合
            IF  子供 ない ツリー[データ[ PARENT_ID  ]]:  もし添加しない子ノードの子 
                ツリー[データ[ PARENT_ID  ]] [ " 子供' ] = []   追加子ノード 
            ツリー[データ[ ' PARENT_ID ' ] [ ' 子供' ] .append(ツリー[DATA [ ' CATEGORY_ID ' ]])  子ノードが下位分類に追加されます
    返す res_data 
PS:親子クラスを参照するデータがdata_dictに分類されています

 

おすすめ

転載: www.cnblogs.com/SR-Program/p/11909274.html