HOWTO · Python

Python에서 사전의 키 변경

값을 유지하면서 Python 사전의 키 하나 또는 여러 개의 이름을 바꾸는 방법을 알아보세요.

이 페이지의 내용

Python 사전의 키 이름을 바꾸려면 기존 키의 값을 새 키에 할당한 다음 기존 키를 삭제합니다. 기존 항목의 값을 가져오면서 키도 한 번에 제거하려면 dict.pop()을 사용합니다. 여러 키를 바꾸거나 조건에 따라 변경하려면 이전 키와 새 키의 대응 관계를 이용해 새 사전을 만들 수 있습니다. 세 방법 모두 연결된 값을 유지하며, 원본 사전을 수정할지 별도의 결과를 만들지에 따라 방법을 선택하세요.

새 키에 값을 할당하고 기존 키를 삭제해 키 변경하기

사전의 키는 제자리에서 수정할 수 없습니다. 간단히 이름을 바꾸려면 기존 키로 값을 읽고, 새 키에 할당한 뒤 기존 항목을 삭제합니다.

fruit = {"A": "Apple", "B": "Banana"}
fruit["C"] = fruit["B"]
del fruit["B"]
print(fruit)

이렇게 하면 값 "Banana"는 유지하면서 B를 C로 바꿉니다. 이 작업은 fruit 사전 자체를 수정합니다. C가 이미 있으면 새 값을 할당할 때 기존 값이 덮어써지므로, 데이터에 중요한 경우 대상 키가 비어 있는지 확인하세요.

dict.pop()으로 키 변경하기

dict.pop()은 지정한 키를 제거하고 그 값을 반환합니다. 반환된 값을 새 키에 바로 전달할 수 있습니다.

person = {"first_name": "John", "last_name": "Doe", "age": 30}
person["given_name"] = person.pop("first_name")

할당이 끝나면 person에는 기존 first_name의 값이 given_name이라는 키로 들어 있습니다. 직접 할당할 때와 마찬가지로 given_name이 이미 있으면 기존 값이 덮어써집니다. 기존 키가 없을 수도 있다면 person.pop("first_name", None)처럼 pop에 기본값을 지정하세요. 기본값 없이 없는 키를 대상으로 호출하면 KeyError가 발생합니다.

사전을 다시 만들어 하나 이상의 키 변경하기

여러 키를 바꾸거나 조건에 따라 이름을 변경하려면 각 기존 키와 새 키를 대응시키고 사전 컴프리헨션을 사용합니다. 대응표에 없는 키는 그대로 유지됩니다.

original = {"a": 1, "b": 2, "c": 3}
key_mapping = {"a": "alpha", "b": "beta"}
renamed = {key_mapping.get(key, key): value for key, value in original.items()}

이 경우 renamed에는 원래 값이 유지된 alpha, beta, c가 들어 있습니다. 컴프리헨션은 새 사전을 만들기 때문에 original은 변경되지 않은 채 남습니다. 서로 다른 두 기존 키가 같은 새 키에 대응하면 컴프리헨션에서 나중에 할당된 값이 먼저 할당된 값을 덮어씁니다. 모든 값을 보존해야 한다면 대응표가 서로 다른 키를 만들도록 하세요. 모든 키에 규칙을 적용해 이름을 바꾸거나 여러 이름을 함께 변경할 때 특히 유용합니다. 원본 데이터에 같은 이름으로 합쳐질 수 있는 키가 있다면 사전을 다시 만들기 전에 대응표를 확인하세요.

조건에 따라 변환할 때도 이 방법을 사용할 수 있습니다. key_mapping.get(key, key)를 각 항목에 대해 원하는 키를 반환하는 식으로 바꾸면 됩니다. 키 식은 처리할 데이터에 대해 결정적이어야 하며, 결과 키는 사전 키의 요건에 따라 해시 가능해야 합니다.

사전 키가 표 형식 데이터의 열을 나타낼 때 DataFrame 열 이름 바꾸기

사전의 키가 표 형식 데이터의 열 이름이라면 DataFrame.rename(columns=...)을 사용해 열 이름을 바꿀 수 있습니다. 사전으로 DataFrame을 만들어도 원본 사전의 키가 바뀌는 것은 아닙니다. 별도의 표 형식 객체가 만들어집니다. 예를 들어 df = df.rename(columns={"a": "alpha"})와 같이 작성할 수 있습니다. 이 코드는 열 이름이 바뀐 DataFrame을 반환하며 원본 사전은 그대로 둡니다. 결과를 다시 사전으로 만들어야 하고 값이 열 목록이라면 df.to_dict(orient="list")처럼 방향을 명시하세요. 이 Pandas 기능을 사용하려면 환경에서 Pandas를 사용할 수 있어야 합니다. 일반 사전에는 자료 구조를 변환하지 않아도 되는 기본 할당, dict.pop() 또는 컴프리헨션 방식이 대체로 더 간단합니다.