-
25.8 심사문제 : 딕셔너리 특정 값 삭제하기코딩도장 심사문제모음 2020. 10. 26. 22:57728x90
표준 입력으로 문자열 여러 개와 숫자 여러 개가 두 줄로 입력되고, 첫 번째 줄은 키, 두 번째 줄은 값으로 하여 딕셔너리를 생성합니다. 다음 코드를 완성하여 딕셔너리에서 키가 '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'코딩도장 심사문제모음' 카테고리의 다른 글
26.9 심사문제 : 공약수 구하기 (0) 2020.10.28 26.8 연습문제 : 공배수 구하기 (0) 2020.10.28 25.7 연습문제 : 평균점수구하기(dictionary이용) (0) 2020.10.26 24.5 심사문제 : 특정 단어 개수 세기 (0) 2020.10.24 24.4 연습문제 : 파일 경로에서 파일명만 가져오기 (0) 2020.10.23