조용하고 맑은 하늘에는 무지개가 없다
ALL ABOUT ME
Developer + DBA + Daily
리스트 딕셔너리 append시 같은 값이 반복되는 오류
DATE 2022/07/29
TAG

주어진 딕셔너리에서

pty_content = [{"today":2019,"mood":"happy"},{"today":2019,"mood":"sad"},{"today":2020,"mood":"happy"}]

key가 today고 today의 value가 2019인 값들을 리스트로 모아서 뽑아보고자 했다.

 

내가 처음했던 실수는 맨 위에 변수설정을 다 작성해야한다고 생각했고 생성한 코드는 이러했다.

pty = []
pty_dict = {}

pty_content = [{"today":2019,"mood":"happy"},{"today":2019,"mood":"sad"},{"today":2020,"mood":"happy"}]

for i in pty_content:
    if i["today"] == 2019:
        pty_dict["today"] = i["today"]
        pty_dict["mood"] = i["mood"]
        pty.append(pty_dict)

print(pty)

결과는 다음과 같았다.

pty 리스트에 최근에 넣은 dictionary key="2019"와 value="sad"만 두 번 출력하는 것이었다.

append의 함수의 문제인가 전역변수 지역변수 할당 문제인가 삽질하다가 결국 dictionary 초기화 위치의 문제인 것을 깨달았다. 코드를 다음과 같이 수정해주면 원하는 값이 출력된다.

pty = []

pty_content = [{"today":2019,"mood":"happy"},{"today":2019,"mood":"sad"},{"today":2020,"mood":"happy"}]

for i in pty_content:
    pty_dict = {}
    if i["today"] == 2019:
        pty_dict["today"] = i["today"]
        pty_dict["mood"] = i["mood"]
        pty.append(pty_dict)

print(pty)

yunicorn