Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python 딕셔너리 키와 값을 소문자로 변환하는 방법

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()를 적용한 새 딕셔너리를 만드는 것이며, 상황에 따라 키만 변환하거나 타입 검사를 추가해 안전성을 높일 수 있습니다.