강의

멘토링

로드맵

Inflearn brand logo image

인프런 커뮤니티 질문&답변

kingryan9996님의 프로필 이미지
kingryan9996

작성한 질문수

프로그래밍 시작하기 : 도전! 45가지 파이썬 기초 문법 실습 (Inflearn Original)

Dict 조회(Dictionary Search By Value)

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

작성

·

119

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'함수를 매번 실행하는 게 비효율적이라는 생각이 들지만 필요하다고도 생각돼서 선생님의 의견을 여쭤봅니다.

답변 2

1

좋은사람님의 프로필 이미지
좋은사람
지식공유자

안녕하세요. kingryan9996님

열심히 하시네요!

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

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

     

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


    감사합니다.

     

kingryan9996님의 프로필 이미지
kingryan9996
질문자

자세한 답변 감사합니다.

1

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

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

  1. 새로운 dict 생성 이유

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

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

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

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

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

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

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

kingryan9996님의 프로필 이미지
kingryan9996

작성한 질문수

질문하기