inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

Dict 조회(Dictionary Search By Value)

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

166

kingryan9996

작성한 질문수 1

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

답변 2

1

좋은사람

안녕하세요. kingryan9996님

열심히 하시네요!

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

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

     

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


    감사합니다.

     

0

kingryan9996

자세한 답변 감사합니다.

1

인프런 AI 인턴

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

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

  1. 새로운 dict 생성 이유

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

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

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

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

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

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

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

for, range 추가 방법

0

26

0

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

0

71

1

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

0

121

4

glob.glob문 오류

0

69

1

질문입니다.

0

60

1

기초적인 질문입니다.

0

52

1

딕셔너리 인트문제

0

48

0

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

0

120

1

실행오류

0

59

2

주피터 노트북 새버전

0

130

2

with open

0

126

2

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

0

178

2

기초적인 질문입니다만

0

107

1

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

0

241

2

주피터 token

0

138

2

주피터 token

0

162

2

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

0

718

4

python 3 (ipykernel)이 뜨지 않음

0

202

1

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

1

340

3

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

0

253

2

오류

0

142

1

주피터 실행 불가 에러

0

406

2

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

0

277

3

편집모드가 안됩니다.

0

298

2