我想知道如何编写二进制搜索,查找2009年至2014年最受欢迎的宝贝名称,名称存储在列表中然后我收到提示,询问我要搜索的内容然后我会输入名称,它会给出迭代多少次以找到某个名称,而且名称也是JSON格式和字母顺序,所以我可以比较字符。我计划在python 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 = ""
答案 0 :(得分:1)
为什么需要使用二分搜索?如果您使用collections.Counter
怎么办?
只需将您的清单(无论是否排序)将宝贝名称传递给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.most_common()
:
>>> baby_name_counts.most_common(1)
[('apple', 2)]