본문 바로가기

SweetPotato1024/Python.PyCharm

list 안에 dict 꺼내서 xlsx로 출력하기

반응형
import pandas as pd

def main():
    population = [
        {
            "서울특별시": 9414,
            "부산광역시": 3306,
            "경기도": [
                {
                    "수원시": 1191,
                    "고양시": 1077
                }
            ]
        }
    ]

    population_sort = {}
    for item in population:
        for location, val in item.items():
            if location == "경기도":
                for sub_item in item["경기도"]:
                    for city, num in sub_item.items():
                        population_sort[city] = num
            else:
                population_sort[location] = val

    print(population_sort)
    
    # dict를 xlsx로 출력하기
    df = pd.DataFrame.from_records([population_sort])
    df.to_excel('test.xlsx')

if __name__ == "__main__":

 

재귀 버전으로 해결하기 

 

def collect_values(node):
    merged = {}
    if isinstance(node, list):
        for item in node:
            assert isinstance(item, (list, dict))
            merged.update(collect_values(item))
    elif isinstance(node, dict):
        for key, val in node.items():
            if isinstance(val, (list, dict)):
                merged.update(collect_values(val))
            else:
                merged[key] = val
    else:
        raise ValueError

    return merged


def main():
    population = [
        {
            "서울특별시": 9414,
            "부산광역시": 3306,
            "경기도": [
                {
                    "수원시": 1191,
                    "고양시": 1077
                }
            ]
        }
    ]

    population_sort = collect_values(population)

    print(population_sort)


if __name__ == "__main__":
    main()

 

반응형

'SweetPotato1024 > Python.PyCharm' 카테고리의 다른 글

json.dump  (0) 2023.12.10
from () import () 차이 import () as ()  (0) 2023.05.30
Python HTML BeautifulSoup  (0) 2023.02.16