2016-06-04 3 views
-1

2009-2014 년에 가장 인기있는 아기 이름을 찾는 이진 검색을 작성하는 방법을 궁금해서 이름이 목록에 저장되고 그 다음에 내가 무엇을 검색하고 싶은지 묻는 프롬프트를 받는다. 이름을 타이핑하면 특정 이름을 찾기 위해 반복되는 횟수를 알려줄 것이고 이름은 JSON 형식과 알파벳순으로되어있어 문자를 비교할 수있다. .이 파이썬 3 쓸 계획이다. 어떤 도움을 주시면 감사하겠습니다.목록에서 단어를 찾는 이진 검색을 작성하는 방법

termToFind = input("What would you like to find? ") 
    tempMeds = [] 
for me in allMeds: 
    if len(me) >= len(termToFind): 
    tempMeds.append(me) 
findLength = len(termToFind) 
currentPos = len(tempMeds) // 2 
stop = False 
iterations = 0 
amountFound = 0 
prevVal = "" 
+1

무엇을 시도 했습니까? 우리는 [teh codez] (http://meta.stackexchange.com/questions/108551/what-site-to-use-if-you-have-a-gimme-teh-codez-question)에 여기 있지 않습니다. . –

+0

나는 이름이 들어있는 목록과 또 다른 빈 배열을 넣을 것이다. @MoonCheesez –

+0

방금 ​​코드를 업데이트했다. @MoonCheesez –

답변

1

왜 바이너리 검색을 사용해야합니까? collections.Counter을 사용한 경우 어떻게 될까요? , 당신은 가장 인기있는 이름을 원하는 경우

import json 
from collections import Counter 

json_baby_names = '["aardvark", "apple", "apple", ...., "zeus"]' 
baby_name_counts = Counter(json.loads(json_baby_names)) 

>>> baby_name_counts['apple'] 
2 

:

그냥 Counter에 아기 이름의 (가 분류 또는 있지 않다면 문제가되지 않습니다) 목록을 통과 한 다음에 관심이 어떤 이름 조회 당신은 Counter.most_common()을 사용할 수 있습니다 :

>>> baby_name_counts.most_common(1) 
[('apple', 2)] 
+0

내가 이진 검색을 사용하는 이유는 내가 익숙해지기에 좋은 연습 일 것이라고 생각하기 때문에 나중에 다른 프로그램에서 쓸 수 있기 때문이다. @mhawke –

관련 문제