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に分類されています