강의

멘토링

커뮤니티

Cộng đồng Hỏi & Đáp của Inflearn

Hình ảnh hồ sơ của sosolyht6689
sosolyht6689

câu hỏi đã được viết

[Làm mới] Bootcamp Nhập môn Python và Cơ bản Crawling [Từ Python, Web đến Hiểu biết Cơ bản về Dữ liệu] (Cập nhật)

Làm quen tự nhiên với Python cơ bản thông qua giải bài tập: Vòng lặp và ứng dụng các cấu trúc dữ liệu đa dạng 2

57번 질문입니다

Viết

·

241

0

- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!
- 먼저 유사한 질문이 있었는지 검색해보세요.
- 서로 예의를 지키며 존중하는 문화를 만들어가요.
- 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
 
16:20 초 가량

data.keys() 를 item 에 집어넣으셨는데

그럼 item 은 data 의 키값을 가져오는건데

data[item] 을 하니 벨류값이 나오는지

도무지 이해가 안갑니다 ㅠ

56번도 같은 맥락으로 이해가 안갑니다.

감사합니다
파이썬python웹-크롤링

Câu trả lời 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번 문제의 지문이 원하는 바를 해치치 않고 잘 만든 코딩이라고 할 수 있을까요?

funcoding님의 프로필 이미지
funcoding
Người chia sẻ kiến thức

안녕하세요. 우선 코드는 정답이 없습니다. 결과만 원하는대로 나오면, 전혀 문제 없다고 보셔도 좋습니다. 상세한 설명은 다음과 같습니다.


1. for item in data.keys(): 안에서 data[item] 이 value 가 되는 이유

data = {'a': 1, 'b': 2}

for item in data.keys():   # item  ←  'a',  'b'
    print(item, data[item])  # data['a'] → 1,  data['b'] → 2
  • dict.keys()키들의 모음 (dict_keys) 을 돌려주고,
    for 반복문에 넣으면 하나씩 item 변수에 들어갑니다.

  • 딕셔너리는 dict[key] 형태로 값을 조회하므로 data[item] 은 그 키에 매달린 value 를 꺼냅니다.
    → “키 → 값” 매핑이 한눈에 보이지 않아 헷갈릴 뿐, 사실상 리스트/튜플 인덱싱과 같은 원리입니다.

56번 질문도 같은 패턴입니다.
for k in some_dict: ---> k 는 키 → some_dict[k] 로 값을 꺼낼 수 있다는 점만 기억하세요.


2. 제안하신 코드가 57번 요구사항을 충족하는가?

english = {
    'environment': '환경 X',
    'company':     '회사 O',
    'government':  '정부, 정치 X',
    'face':        '얼굴 X'
}

for key in english.keys():          # 또는 그냥 for key in english:
    if english[key][-1] == "X":     # value 문자열의 마지막 글자가 'X'?
        print(key)

충분히 깔끔하고, 요구 조건(‘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()) 를 만들지 않았으므로 메모리·속도 모두 유리합니다.
따라서 지금 코드로 그대로 사용하셔도 전혀 문제 없습니다! 😊

0

funcoding님의 프로필 이미지
funcoding
Người chia sẻ kiến thức

안녕하세요.

사전 데이터 구조는 변수[키] = 값 으로 특정 키에 대한 값을 가져올 수 있습니다.

그래서, item 이 해당 data 변수가 가진 각각의 키 이고요. 이를 반복문으로 하나씩 가져오면서,

data[item] 이 각 키에 대한 값을 가져오게 되고, 이를 if 구문으로 조건을 체크하는 것입니다.

이렇게 쓰는 것이 어색하셔서 그러지 않을까 하는데 어떠실가요?

Hình ảnh hồ sơ của sosolyht6689
sosolyht6689

câu hỏi đã được viết

Đặt câu hỏi