如何编写一个二进制搜索来查找列表中的单词

时间:2016-06-04 03:45:02

标签: python binary dataset binary-search

我想知道如何编写二进制搜索,查找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 = ""

1 个答案:

答案 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)]