ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 25.8 심사문제 : 딕셔너리 특정 값 삭제하기
    코딩도장 심사문제모음 2020. 10. 26. 22:57
    728x90

    표준 입력으로 문자열 여러 개와 숫자 여러 개가 두 줄로 입력되고, 첫 번째 줄은 키, 두 번째 줄은 값으로 하여 딕셔너리를 생성합니다. 다음 코드를 완성하여 딕셔너리에서 키가 'delta'인 키-값 쌍과 값이 30인 키-값 쌍을 삭제하도록 만드세요.

    사용한 코드

    1. sum

    2. len

    3. pop

    첫 접근 방법

    pop 메서드로는 키 ('delta') 값을 삭제하여 delta키 , 값 쌍을 삭제하고

    딕셔너리 표현식에 if 문을 사용해 30이 아닐때에만 반복으로 값을 넘겨주도록 설정하면된다.

    처음에는 x 변수 말고 y라는 변수를 이용해

    y = { key : value for key, value in x.items() if value != 30}

    y.pop('delta') 

    처럼 접근하였다

    x.items()로 x의 딕셔너리를 사용후 y로 딕셔너리를 새로 구성하려하였다.

    만약 x=  y.pop('delta')를 하면

    라는 딕셔너리에서 y.pop('delta') 후, 키에 해당하는 값이 60 반환되는어 x에 다시 할당될것이고

    출력 결과는 60이 나올 것이다.

    답에 원하는 x로 출력하기 위해 x라는 변수만을 이용해 재할당하여 해결 할 수 있었다.

    풀이

    1. 입력값을 딕셔너리로 구성해주는 코드를 알아두자!!!!

    keys = input().split()

    values = map(int, input().split())

     x = dict(zip(keys, values))

    :: {'alpha': 10, 'bravo': 20, 'charlie': 30, 'delta': 40}

    2. 먼저 입력값으로 딕셔너리 x에서 '키'를 기준으로 키, 값 쌍을 삭제해준다. 

    x.pop('delta')

    3. 'delta' 키를 삭제한 x 딕셔너리를 x.items()의 x로 활용하고

    if 문을 이용해 value 값 30에 해당하는 키, 값 쌍을 삭제하고 x 에 딕셔너리를 재할당한다.

    x = { key : value for key, value in x.items() if value != 30}

    print(x)

    :: {'alpha': 10, 'bravo': 20}

    ## value != 30 아닌 값을 가지고 있는 키, 값 쌍을 사용하자는 의미이다.

    ※ 실제 코딩 도장의 해법과 다를  수 있으며, 답은 여러가지가 존재합니다.

    코딩 지적 정말 감사히 받겠습니다.

    728x90
Designed by Tistory.