inflearn logo
강의

Khóa học

Chia sẻ kiến thức

Bắt đầu lập trình: Thử thách! 45 bài tập về ngữ pháp cơ bản của Python (Inflearn Original)

Tra cứu Từ điển (Tìm kiếm theo giá trị)

새로운 dict를 생성한 이유에 대해서 궁금합니다.

169

kingryan9996

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

0

d = {'USA': 36, 'Germany': 17,'France':32, 'Australia': 77, 'South Africa': 99, 'India': 108, 'South Korea': 200, 'South Japan':300}

print(d.get("France"))
t = input("You won't search of contury?").title()
print(t,"<<입력값")

def add_space(a):
    if 'South' in a:
        print(a.find('South'))
        i = a.find('South')
        # print(a[i:i+5])
        a = a[i:i+5]+' '+a[i+5:len(a)].title()
        return a
    # if 'East' in a:
    #     ---
    # if 'Wset' in a:
    #     ---
    # if 'North' in a:
    #     ---
        
t = add_space(t)

if t == "Usa":
    t = "USA"
else:
    print(a)

country = d.get(t)

if not country:
    print('No results were found for your search.')
else:
    print(country)

 

안녕하세요 강의 수강 중 궁금한 점이 있어서 질문드립니다.

  1. 강의 7:33에서 key가 소문자인 형태로 새로운 dict을 생성하신 이유가 궁금합니다.

    1. 문제 해결을 위한 생성 이외에

      1. 원본 변수인 'd'의 수정을 방지하기 위함과

      2. 지금 예제는 눈으로 모든 값을 확인할 수 있지만 많은 데이터를 가진 시퀀스의 경우에는 어떠한 예외가 발생할지 모르니 그에 대한 대비

    제가 생각해 본 이유가 맞는지 또한 다른 이유가 있으신지 궁금합니다.

  2. 또한 제 코드에서 'add_space'함수를 매번 실행하는 게 비효율적이라는 생각이 들지만 필요하다고도 생각돼서 선생님의 의견을 여쭤봅니다.

python

Câu trả lời 2

1

niceman

안녕하세요. kingryan9996님

열심히 하시네요!

  1. 소문자, 대문자의 큰 의미는 없습니다. 보통은 소문자, 대문자, 시작문자가(대소문자)인 경우를
    경우를 고려해야 하기 때문에 코딩 하는 다양한 형태로 구현했습니다.

  2. add_space함수는 일단은 dict에 있는 단어를 매칭해야 되기 때문에 반복 실행되는 형태는 맞습니다.

     

    최소한의 횟수로 매칭을 해볼 수 있는 방법을 생각해보겠습니다.
    다만, lambda형태를 활용하거나, 리스트컴프리핸션 등으로 대치하여 구현하면 더욱 좋을 것 같습니다.


    감사합니다.

     

0

kingryan9996

자세한 답변 감사합니다.

1

communityai8509

안녕하세요, 인프런 AI 인턴입니다.

질문해 주신 내용에 대해 답변드리겠습니다.

  1. 새로운 dict 생성 이유

새로운 dict를 생성하는 것은 여러 이유가 있을 수 있습니다. 주로 데이터의 무결성을 유지하고, 원본 데이터를 보호하기 위한 것입니다. 예를 들어, 데이터가 수정되어서는 안 될 경우, 원본 데이터를 복사해서 사용함으로써 변경을 피할 수 있습니다. 또한, 대량의 데이터가 있을 경우 특정 키 값을 찾으려면, 소문자로 통일함으로써 검색의 일관성을 제공할 수 있습니다. 이는 코드의 유지보수성 및 확장성을 높이는 데 도움이 됩니다.

즉, 원본 데이터의 변경을 방지하고, 대량 데이터 처리 시 예외를 최소화하기 위한 대비로 보아도 무방합니다.

  1. ‘add_space’ 함수의 비효율성

‘add_space’ 함수를 매번 실행하는 것에 대한 비효율성은 데이터의 양이 증가하면 더욱 두드러질 수 있습니다. 이럴 때는 데이터 전처리 단계에서 한번만 전처리할 수 있는 방법을 고려하는 것이 좋습니다. 예를 들어, 파이프라인의 초기 단계에서 필요한 변형을 모두 마친 후 필요한 값으로 결과를 보여주는 방식으로 처리할 수 있습니다.

함수 호출 횟수를 최소화하여 성능을 향상시키거나, 결과를 캐시하여 동일한 입력에 대해 재계산하지 않도록 설정하는 방법 등을 고려해 보실 수 있습니다.

이와 유사한 내용을 다루는 다른 질문이 있을 수 있으니, 관련 질문 링크를 참고하시면 도움이 될 것입니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

dict, zip

0

21

2

for, range 추가 방법

0

39

0

오타: 20-1 예시 코드에 c = 135가 아니고 a = 135이죠?

0

77

1

방법2, 방법3의 결과가 요구 출력결과와 다릅니다.

0

125

4

glob.glob문 오류

0

71

1

질문입니다.

0

65

1

기초적인 질문입니다.

0

56

1

딕셔너리 인트문제

0

53

0

아나콘다 설치 시 오류가 뜨면서 인스톨이 끝까지 안 되네요...

0

123

1

실행오류

0

65

2

주피터 노트북 새버전

0

134

2

with open

0

131

2

PowerShell Prompt에서 주피터노트북 기본 드라이버/폴더 위치변경 후 주피터노트북 실행

0

186

2

기초적인 질문입니다만

0

113

1

안녕하세요 전 버전이 상위버전인지 달라서

0

245

2

주피터 token

0

142

2

주피터 token

0

166

2

아나콘다를 D드라이브에 설치했는데

0

721

4

python 3 (ipykernel)이 뜨지 않음

0

203

1

안돼요ㅜㅜ in[]으로 뜨지도 않고 초록색으로 변하지도 않아요...

1

346

3

주피터를 크롬말고 엣지에서 그대로 써도 괜찮은가요?

0

259

2

오류

0

149

1

주피터 실행 불가 에러

0

414

2

아나콘다 다운받았는데 주피터는 같이 다운로드가 안 됐어요 어떻게 하면 되나요??

0

286

3