리스트 딕셔너리 append시 같은 값이 반복되는 오류
주어진 딕셔너리에서
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)