Python 구조 트 리 구 조 는 도시 등급 코드 에 응용 된다.

Python 구조 트 리 구 조 는 도시 등급 코드 에 응용 된다.
응용 배경
실제 장면 응용 에서 일부 데이터 에 대해 등급 인 코딩 을 해 야 한다.이 럴 때 트 리 구 조 를 사용 하여 이 실현 을 지원 해 야 한다.여기 서 전형 적 인 응용 예 를 들 어 전국 도시 에 대한 등급 코드 를 제시한다.예 를 들 어 전국 아래 에 34 개의 성급 행정구 가 있 는데 호북성 을 예 로 들 면 호북성 아래 에 15 개의 성 관할 시 나 주가 있 고 각 시 아래 에 몇 개의 구역 이나 현 이 있다.이러한 매우 흔히 볼 수 있 는 등급 구 조 는 하나의 숫자 로 표시 할 수 있 으 며,여 기 는 Python 을 사용 하여 나무의 구 조 를 실현 할 수 있다.
데이터 샘플
도시 견본 파일 데이터(여 기 는 부분 일 뿐)를 정의 합 니 다.각 줄 의 기록 은 각 기록 에서 서로 다른 등급 으로 쉼표 로 구분 합 니 다.
   ,   ,   
   ,   ,   
   ,   ,   
   ,   ,   
   ,   ,   
   ,   ,   
   ,   ,  
   ,   ,   
   ,   ,               
   ,   ,   
   ,   ,       
   ,   ,         
   ,   ,   
   ,   ,   
   ,   ,   
   ,   ,       
   ,   ,   
   ,   ,        
   ,   ,   
   ,   ,   
   ,   ,   
   ,   ,   
   ,   ,   

나무의 구조
우 리 는 트 리 의 노드 를 정의 합 니 다.다음 과 같은 몇 가지 요 소 를 포함 합 니 다.
명칭.
유형
묘사 하 다.
묘사 하 다.
name
String
명칭
"운남성"
index
String
노드 번호 값 의 경로,루트 노드 에서 이 노드 의 경로
“0|11|1101|110101”
value
String
노드 번호 의 값
“110101”
children
array
노드 의 아이 노드
[“110101”,“110102”,“110103”]
부호화 규칙
우 리 는 인 코딩 규칙 을 정의 합 니 다.먼저 정렬 파일 을 텍스트 에 따라 정렬 합 니 다.그러면 각 성의 데이터 가 집중 되 고 정렬 된 다음 에'전국'의 value 를'0'으로 설정 한 다음 에 1 급 디 렉 터 리(성)value 는'10'에서 시작 하고 2 급 디 렉 터 리(시)의 value 는 대응 하 는 1 급 디 렉 터 리*100 에서 시작 합 니 다.3 급 4 급 은 순서대로 유추 한다.
트 리 노드 코드
class Node(object):
    def __init__(self, name, value="0", index="0"):
        self.name = name
        self.index = index
        self.value = value
        self.children = []

	#           
    def search(self, node):
        if self.name == node.name:
            return self
        if not self.children:
            return None
        else:
            for child in self.children:
                childres = child.search(node)
                if childres:
                    return childres
            return None

    def add_child(self, node):
        self.children.append(node)

    def set_value(self, value):
        self.value = value

    def set_index(self, index):
        self.index = index

	#       json  
    def to_json(self):
        res = {}
        res['value'] = self.value
        res['name'] = self.name
        res['index'] = self.index
        res['children'] = []
        for child in self.children:
            res['children'].append(child.to_json())
        return res

	#              
    def index_display(self, index):
        if self.index == index:
            print(self.name)
        if self.children:
            for child in self.children:
                child.index_display(index)


트 리 생 성 과정
def create_tree_from_local_file():
    first_no = 10  #      10  ,            *100  ,        
    root_node = Node("  ", index="0")  #    
    
    path = "your file path"  #         ,             
    for line in open(path encoding="utf-8"):  
        lines = line.strip("\r
").split(",") first_node = Node(lines[0]) # if first_node.name not in [child.name for child in root_node.children]: first_node.set_value(str(first_no)) first_node.set_index(root_node.index + "|" + first_node.value) first_no = first_no + 1 root_node.add_child(first_node) cur_node = root_node.search(first_node) for node in [Node(name=tmp) for tmp in lines[1:]]: # if node.name not in [child.name for child in cur_node.children]: length = len(cur_node.children) node.set_value(str(length + 100 * int(cur_node.value))) node.set_index(cur_node.index + "|" + node.value) cur_node.add_child(node) cur_node = root_node.search(node) print(root_node.to_json())

실행 결과
{
    "value": "0", 
    "name": "  ", 
    "index": "0", 
    "children": [
        {
            "value": "10", 
            "name": "   ", 
            "index": "0|10", 
            "children": [
                {
                    "value": "1000", 
                    "name": "   ", 
                    "index": "0|10|1000", 
                    "children": [
                        {
                            "value": "100000", 
                            "name": "   ", 
                            "index": "0|10|1000|100000", 
                            "children": [ ]
                        }, 
                        {
                            "value": "100001", 
                            "name": "   ", 
                            "index": "0|10|1000|100001", 
                            "children": [ ]
                        }, 
                        {
                            "value": "100002", 
                            "name": "   ", 
                            "index": "0|10|1000|100002", 
                            "children": [ ]
                        }, 
                        {
                            "value": "100003", 
                            "name": "   ", 
                            "index": "0|10|1000|100003", 
                            "children": [ ]
                        }, 
                        {
                            "value": "100004", 
                            "name": "   ", 
                            "index": "0|10|1000|100004", 
                            "children": [ ]
                        }
                    ]
                }
            ]
        }, 
        {
            "value": "11", 
            "name": "   ", 
            "index": "0|11", 
            "children": [
                {
                    "value": "1100", 
                    "name": "   ", 
                    "index": "0|11|1100", 
                    "children": [
                        {
                            "value": "110000", 
                            "name": "   ", 
                            "index": "0|11|1100|110000", 
                            "children": [ ]
                        }, 
                        {
                            "value": "110001", 
                            "name": "  ", 
                            "index": "0|11|1100|110001", 
                            "children": [ ]
                        }, 
                        {
                            "value": "110002", 
                            "name": "   ", 
                            "index": "0|11|1100|110002", 
                            "children": [ ]
                        }, 
                        {
                            "value": "110003", 
                            "name": "               ", 
                            "index": "0|11|1100|110003", 
                            "children": [ ]
                        }, 
                        {
                            "value": "110004", 
                            "name": "   ", 
                            "index": "0|11|1100|110004", 
                            "children": [ ]
                        }, 
                        {
                            "value": "110005", 
                            "name": "       ", 
                            "index": "0|11|1100|110005", 
                            "children": [ ]
                        }, 
                        {
                            "value": "110006", 
                            "name": "         ", 
                            "index": "0|11|1100|110006", 
                            "children": [ ]
                        }, 
                        {
                            "value": "110007", 
                            "name": "   ", 
                            "index": "0|11|1100|110007", 
                            "children": [ ]
                        }
                    ]
                }, 
                {
                    "value": "1101", 
                    "name": "   ", 
                    "index": "0|11|1101", 
                    "children": [
                        {
                            "value": "110100", 
                            "name": "   ", 
                            "index": "0|11|1101|110100", 
                            "children": [ ]
                        }, 
                        {
                            "value": "110101", 
                            "name": "   ", 
                            "index": "0|11|1101|110101", 
                            "children": [ ]
                        }, 
                        {
                            "value": "110102", 
                            "name": "       ", 
                            "index": "0|11|1101|110102", 
                            "children": [ ]
                        }, 
                        {
                            "value": "110103", 
                            "name": "   ", 
                            "index": "0|11|1101|110103", 
                            "children": [ ]
                        }, 
                        {
                            "value": "110104", 
                            "name": "        ", 
                            "index": "0|11|1101|110104", 
                            "children": [ ]
                        }
                    ]
                }, 
                {
                    "value": "1102", 
                    "name": "   ", 
                    "index": "0|11|1102", 
                    "children": [
                        {
                            "value": "110200", 
                            "name": "   ", 
                            "index": "0|11|1102|110200", 
                            "children": [ ]
                        }, 
                        {
                            "value": "110201", 
                            "name": "   ", 
                            "index": "0|11|1102|110201", 
                            "children": [ ]
                        }, 
                        {
                            "value": "110202", 
                            "name": "   ", 
                            "index": "0|11|1102|110202", 
                            "children": [ ]
                        }, 
                        {
                            "value": "110203", 
                            "name": "   ", 
                            "index": "0|11|1102|110203", 
                            "children": [ ]
                        }, 
                        {
                            "value": "110204", 
                            "name": "   ", 
                            "index": "0|11|1102|110204", 
                            "children": [ ]
                        }
                    ]
                }
            ]
        }
    ]
}

좋은 웹페이지 즐겨찾기