작성
·
222
답변 2
0
안녕하십니까. 57번 문제를 선생님과 조금 다르게 풀어 이 방법도 문제 없는 것인지 여쭈어 보고 싶어 문의 드립니다. 저 같은 경우 values를 list 형태로 만들지 않고 문제를 풀었습니다.
english={'environment':'환경 X', 'company':'회사 O', 'government':'정부, 정치 X', 'face':'얼굴 X'}
for e1 in english.keys():
if english[e1][-1]=="X":
print(e1)
이러한 형태로도 57번 문제의 지문이 원하는 바를 해치치 않고 잘 만든 코딩이라고 할 수 있을까요?
0
안녕하세요.
사전 데이터 구조는 변수[키] = 값 으로 특정 키에 대한 값을 가져올 수 있습니다.
그래서, item 이 해당 data 변수가 가진 각각의 키 이고요. 이를 반복문으로 하나씩 가져오면서,
data[item] 이 각 키에 대한 값을 가져오게 되고, 이를 if 구문으로 조건을 체크하는 것입니다.
이렇게 쓰는 것이 어색하셔서 그러지 않을까 하는데 어떠실가요?
안녕하세요. 우선 코드는 정답이 없습니다. 결과만 원하는대로 나오면, 전혀 문제 없다고 보셔도 좋습니다. 상세한 설명은 다음과 같습니다.
1.
for item in data.keys():
안에서data[item]
이 value 가 되는 이유dict.keys()
는 키들의 모음 (dict_keys
) 을 돌려주고,for
반복문에 넣으면 하나씩 키가item
변수에 들어갑니다.딕셔너리는
dict[key]
형태로 값을 조회하므로data[item]
은 그 키에 매달린 value 를 꺼냅니다.→ “키 → 값” 매핑이 한눈에 보이지 않아 헷갈릴 뿐, 사실상 리스트/튜플 인덱싱과 같은 원리입니다.
2. 제안하신 코드가 57번 요구사항을 충족하는가?
✔충분히 깔끔하고, 요구 조건(‘value 끝이 X 인 key 출력’)에 정확히 부합합니다.
추가로 고려해 볼 만한 자잘한 개선 포인트만 정리하면:
포인트 이유 예시
for key in english:
로 간단히dict
를 직접 순회해도 키가 나옵니다.for key in english:
.endswith('X')
사용 가독성 ↑, 인덱스 오류 위험 ↓if english[key].endswith('X'):
키–값을 모두 써야 할 땐for k, v in english.items():
별도 인덱싱 없이 한 줄에 접근for k, v in english.items():
성능 면에서도, 별도
list(english.values())
를 만들지 않았으므로 메모리·속도 모두 유리합니다.따라서 지금 코드로 그대로 사용하셔도 전혀 문제 없습니다! 😊