Python 딕셔너리 키와 값을 소문자로 변환하기
Python에서 딕셔너리(dict)의 키와 값을 소문자로 변환하려면 각 항목을 순회하면서 문자열의 lower() 메서드를 적용하고, 그 결과로 새로운 딕셔너리를 생성하면 됩니다. 가장 기본적인 방법은 dict()와 제너레이터 표현식을 조합하는 것입니다.
키와 값을 모두 소문자로 변환
다음 예제는 딕셔너리의 키와 값을 모두 소문자로 변환합니다.
def lower_dict(d):
new_dict = dict((k.lower(), v.lower()) for k, v in d.items())
return new_dict
a = {'Foo': "Hello", 'Bar': "World"}
print(lower_dict(a))
실행 결과는 다음과 같습니다.
{'foo': 'hello', 'bar': 'world'}키만 소문자로 변환
값은 그대로 두고 키만 소문자로 바꾸고 싶다면, lower()를 키에만 적용하면 됩니다.
def lower_dict(d):
new_dict = dict((k.lower(), v) for k, v in d.items())
return new_dict
a = {'Foo': "Hello", 'Bar': "World"}
print(lower_dict(a))
실행 결과는 다음과 같습니다.
{'foo': 'Hello', 'bar': 'World'}딕셔너리 컴프리헨션으로 더 간결하게
Python 2.7 이상에서는 딕셔너리 컴프리헨션(dictionary comprehension)을 사용하면 코드를 더욱 간결하게 작성할 수 있습니다.
a = {'Foo': "Hello", 'Bar': "World"}
lowered = {k.lower(): v.lower() for k, v in a.items()}
print(lowered)주의 사항: 문자열이 아닌 값 처리
lower()는 문자열 전용 메서드이므로, 딕셔너리에 정수나 리스트 같은 문자열이 아닌 값이 포함되어 있으면 AttributeError가 발생합니다. 이런 경우 타입을 확인한 뒤 변환하는 것이 안전합니다.
def safe_lower_dict(d):
new_dict = {}
for k, v in d.items():
new_key = k.lower() if isinstance(k, str) else k
new_value = v.lower() if isinstance(v, str) else v
new_dict[new_key] = new_value
return new_dict
a = {'Foo': "Hello", 'Count': 42}
print(safe_lower_dict(a))
실행 결과는 다음과 같습니다.
{'foo': 'hello', 'count': 42}정리하면, 딕셔너리의 키/값을 소문자로 변환하는 핵심은 항목을 순회하면서 lower()를 적용한 새 딕셔너리를 만드는 것이며, 상황에 따라 키만 변환하거나 타입 검사를 추가해 안전성을 높일 수 있습니다.