딕셔너리 컨프리핸션(Dictionary comprehension)

반응형
    반응형

    딕셔너리 컨프리핸션

    파이썬은 코드의 간결함이 가장 큰 장점이요. 이전 포스팅에서 컴프리핸션(list comprehension) 작성요령만 써놨는데 이번 포스팅에서는 딕셔너리 컴프리핸션에 대해 더 써볼까 합니다.

    기본 문법

    딕셔너리 컴프리핸션은 한 줄의 코드로 for문이 딕셔너리 안에서 작동할 수 있게 해주는 문법입니다. 기본적인 문법은 다음과 같습니다.

    {키_표현식: 값_표현식 for 요소 in 반복 가능 객체 if 조건식}

    • 키_표현식 : 딕셔너리의 키로 사용할 값.
    • 값 표현식 : 딕셔너리의 값으로 사용할 값.
    • 반복 가능 객체 : 리스트, 튜플, 문자열, 또는 range와 같은 반복 가능한 객체
    • 조건식(선택) : 특정 조건을 만족하는 경우에만 요소 포함.

    딕셔너리 컴프리핸션의 장점

    1. 가독성 향상 : 코드가 간결해져 읽기 쉬워집니다.
    2. 성능 개선 : for 문보다 빠르게 실행되기 때문에 효율적입니다.
    3. 유연성 : 조건문가 같은 표현식을 지원하기에 복잡한 딕셔너리도 코드 한줄로 생성할 수 있습니다.

    기본 딕셔너리 생성 예제

    간단한 예제입니다. 1부터 5까지의 제곱 값을 나타내는 딕셔너리를 생성합니다.

    sqaures = {x: x^^2 for x in range(1,6)}
    print(squares)

    출력 :

    {1: 1, 2: 4, 3: 9, 4: 16, 5: 25}

    조건식을 포함한 예제

    이번에는 짝수인 경우에만 1에서 10까지 제곱 값을 넣는 딕셔너리를 만들겠습니다.

    even_squares = {x: x**2 for x in range(1, 11) if x % 2 == 0}
    print(even_squares)

    출력:

    {2: 4, 4: 16, 6: 36, 8: 64, 10: 100}

    리스트를 이용한 예제

    리스트의 값을 딕셔너리로 가져오는 예제입니다. 실제로도 많이 쓰고 유용합니다.

    아래 예제는 가장 하기 쉬운 실수인데요.
    for문을 그냥 넣어버리면 key 값은 상관없지만 value 값이 마지막 값만 출력됩니다.

    잘못된 예

    keys = ["a", "b", "c"]
    values = [1, 2, 3]
    combined = {k: v for k in keys for v in values}
    print(combined)

    출력 :

    {'a': 3, 'b': 3, 'c': 3}

    잘된예 zip 사용

    리스트의 순서를 맞추어서 딕셔너리에 넣으려면 zip을 사용해 바인딩한 후 for문을 합니다.

    keys = ['a','b','c']
    values = [1,2,3]
    combined = {k:v for k, v in zip(keys,values)}
    print(combined)

    출력 :

    {'a': 1, 'b': 2, 'c': 3}

    마치며

    딕셔너리 컴프리핸션에 대해 알아보았는데요. 너무 복잡한 표현식은 오히려 가독성을 떨어뜨릴 수 있고 데이터셋이 너무 크면 메모리를 과도하게 사용할 수 있으니 주의해야 합니다.

     

    함께 보면 좋은 글

     

     

    빅데이터 분석을 위한 파이썬 총정리

    빅데이터 분석을 위한 파이썬 목차블로그를 대학원 때 코딩이 너무 헷갈려서 지식 저장공간으로 사용하려고 시작했습니다. 글을 정리하다보니 정말 많은 글을 썼다는 걸 새삼 느낍니다. 한때

    seong6496.tistory.com

     

     

    [Python] Comprehension

    Comprehension는 iterable한 오브젝트를 생성하는 방법으로 list, dict, set 같은 오브젝트에 원소를 담을 때 주로 사용합니다. for문을 안에 넣어서 수행하기 때문에 짧은 코딩으로 만들 수 있습니다. List c

    seong6496.tistory.com

     

     

    Python 딕셔너리 value 값으로 key 값 찾기

    딕셔너리는 key : value 값으로 되어있습니다. key값을 넣어주면 value 값이 나오는 구조입니다. 그런데 value 값으로 key 값을 찾아야 할 경우가 종종 생기지만 dict 명령으로는 불러올 수가 없습니다.

    seong6496.tistory.com

     

    댓글

    Designed by JB FACTORY

    ....