딕셔너리 key 변경하기
- Python/기초
- 2021. 3. 27.
딕셔너리를 미리 만들었는데 key가 잘못되서 바꾸고 싶을 때가 있는데 그런 경우 해당 key를 변경할 수 있습니다.
준비
cap_dict
cap_dict은 미국 s&p500의 코드와 시가총액을 묶어놓은 딕셔너리입니다.
근데 코드가 아니라 종목명으로 key를 했어야 했는데 그러지 못했습니다. 종목명으로 바꾸려면 key를 각각 바꿔야 합니다. 이럴 때 다음과 같이 합니다.
일단 현재 상황은 코드에 맞는 종목명을 가져와야 바꿀 수 있습니다. 바꿀게 있어야죠~!
코드와 종목명이 연결된 pandas를 불러오겠습니다.
df_sp
이 데이터는 s&p500의 코드와 종목명과 섹터와 산업으로 구성된 엑셀파일입니다. pandas로 불러왔습니다.
현 데이터에서 코드와 종목명을 가져와 딕셔너리 key를 바꾸도록 하겠습니다.
딕셔너리 key 바꾸기
어떻게 바꾸냐 하면 pop을 이용합니다.
dict[newkey] = dict.pop(oldkey)
간단하게 새로운 newkey를 pop으로 내보낸 oldkey 자리에 넣으면 됩니다.
pop을 하면 value 값을 내보내고 기존의 데이터는 지워지기 때문에 가능합니다.
저희는 한번에 다 할 것이므로 for 문을 이용하겠습니다.
그런데 딕셔너리에서 바로 하면 오류가 생깁니다.
for key in cap_dict.keys():
print(key)
name = df_sp[df_sp['Symbol']==key].Name.values[0]
cap_dict[name]=cap_dict.pop(key)
key를 print 했는데 마지막을 보면 이미 name으로 바뀐 게 다시 나오는 현상이 발생합니다.
그러면서 일부는 하지 못하고 그대로 끝이 납니다.
이 이유는 우리가 for문을 하는 곳이 딕셔너리라서 그렇습니다.
딕셔너리의 key가 계속 바뀌고 있기 때문에 했던 것을 다시 가져올 수 있습니다.
그러니 for문을 돌리는 공간은 변하지 않는 고정된 상태여야 합니다.
그래서 코드로 구성된 key를 list로 저장하고 for문을 돌립니다.
for key in list(cap_dict.keys()):
name = df_sp[df_sp['Symbol']==key].Name.values[0]
cap_dict[name]=cap_dict.pop(key)
cap_dict
오류없이 key를 변경하였습니다.
'Python > 기초' 카테고리의 다른 글
[Python]리스트, 딕셔너리 메모장에 저장,불러오기 (0) | 2021.04.03 |
---|---|
문자열 포맷 출력 (0) | 2021.03.31 |
[Python] Range, Enumerate (0) | 2021.03.17 |
[Python]폴더 안에 파일 이름 목록 가져오기 (0) | 2021.03.14 |
Jupyter notebook 기본폴더 변경해서 시작 (0) | 2021.03.12 |