편집 기록

편집 기록
  • 프로필 nowp님의 편집
    날짜2022.10.11

    python3 재귀함수를 사용하여 이와 같이 구현해보려하는데 막혀서 질문드립니다!


    아래와 같이 netsted한 구조를 가진 형식인데

    1. 자기 자신의 부모 값을 가져야 합니다. (최상위 루트는 부모가 자기 자신이니 None입니다!)
    2. 맨 끝 노드까지 찾게된 후 부모 중 리스트인 부모가 있다면 다음 인덱스로 다시 끝까지 찾게 됩니다.
    3. 값이 리스트 일 카운트+1 이 되며(기본 0),
    4. 다음 n+1인덱스도 끝까지 찾아 가게 됩니다! 설명이 다소 부족한 점 이해 부탁드립니다 꾸벅.

    example

    {
      "a": {
        "a_a": [
          {
            "a_a_a": [
              {
                "a_a_a_a": {
                  "a_a_a_a_a": {
                    "value": "first value",
                    "check": true
                  }
                }
              },
              {
                "a_a_a_b": {
                  "a_a_a_b_a": {
                    "value": "second value",
                    "check": true
                  }
                }
              }
            ]
          }
        ]
      }
    }
    

    result ( 원하는 방향 )

    [
        {"id": 1, "field_id": "a | 0",  "parent_id": None, "value": None, "check": False},
        {"id": 2, "field_id": "a_a | 0", "parent_id": 1, "value": None, "check": False},
        {"id": 3, "field_id": "a_a_a | 0", "parent_id": 2, "value": None, "check": False},
        {"id": 4, "field_id": "a_a_a_a | 0", "parent_id": 3, "value": None, "check": False},
        {"id": 5, "field_id": "a_a_a_a_a | 0", "parent_id": 4, "value": "first_value", "check": True},
        {"id": 6, "field_id": "a_a_a | 1", "parent_id": 2, "value": None, "check": False},
        {"id": 7, "field_id": "a_a_a_b | 0", "parent_id": 6, "value": None, "check": False},
        {"id": 8, "field_id": "a_a_a_b_a | 0", "parent_id": 7, "value": "second value", "check": True},
    ]
    

    시도한 방향

    def recursive(request: dict):
        id = uuid.uuid().hex
        serialize = []
        for k, v in request.items():
            if isinstance(v, list):
                for re_list in v:
                    recursive(re_list)
            elif isinstance(v, dict):
                recursive(v)
            else:
                serialize.extend(
                    id,
                    f"{request.get('field_id')} | cnt",
                    request.get("parent_id", None),
                    request.get("check", False)
                )
        return serialize
    
  • 프로필 윤우섭님의 편집
    날짜2022.10.11

    python3 재귀함수를 사용하여 이와 같이 구현해보려하는데 막혀서 질문드립니다!


    아래와 같이 netsted한 구조를 가진 형식인데

    1. 자기 자신의 부모 값을 가져야 합니다. (최상위 루트는 부모가 자기 자신이니 None입니다!)
    2. 맨 끝 노드까지 찾게된 후 부모 중 리스트인 부모가 있다면 다음 인덱스로 다시 끝까지 찾게 됩니다.
    3. 값이 리스트 일 카운트+1 이 되며(기본 0),
    4. 다음 n+1인덱스도 끝까지 찾아 가게 됩니다! 설명이 다소 부족한 점 이해 부탁드립니다 꾸벅.

    example

    {
      "a": {
        "a_a": [
          {
            "a_a_a": [
              {
                "a_a_a_a": {
                  "a_a_a_a_a": {
                    "value": "first value",
                    "check": true
                  }
                }
              },
              {
                "a_a_a_b": {
                  "a_a_a_b_a": {
                    "value": "second value",
                    "check": true
                  }
                }
              }
            ]
          }
        ]
      }
    }
    

    result ( 원하는 방향 )

    [
        {"id": 1, "field_id": "a | 0",  "parent_id": None, "value": None, "check": False},
        {"id": 2, "field_id": "a_a | 0", "parent_id": 1, "value": None, "check": False},
        {"id": 3, "field_id": "a_a_a | 0", "parent_id": 2, "value": None, "check": False},
        {"id": 4, "field_id": "a_a_a_a | 0", "parent_id": 3, "value": None, "check": False},
        {"id": 5, "field_id": "a_a_a_a_a | 0", "parent_id": 4, "value": "first_value", "check": True},
        {"id": 6, "field_id": "a_a_a | 1", "parent_id": 2, "value": None, "check": False},
        {"id": 7, "field_id": "a_a_a_b | 0", "parent_id": 6, "value": None, "check": False},
        {"id": 8, "field_id": "a_a_a_b_a | 0", "parent_id": 7, "value": "second value", "check": True},
    ]
    

    시도한 방향

    def recursive(request: dict):
        id = uuid.uuid().hex
        serialize = []
        for k, v in request.items():
            if isinstance(v, list):
                for re_list in v:
                    recursive(re_list)
            elif isinstance(v, dict):
                recursive(v)
            else:
                serialize.extend(
                    id,
                    f"{request.get('field_id')} | cnt",
                    request.get("parent_id", None),
                    request.get("check", False)
                )
        return serialize