【发布时间】:2021-03-21 21:07:17
【问题描述】:
我有一个包含字典的列表:
base = [
{"name": "Earth", "Density": 5.427},
{"name": "Mars", "Density": 5.513},
{"name": "Venus", "Density": 5.204},
]
name = input("What planet are you looking for? ")
该函数应返回项目的索引(在本例中为行星),如果不存在则返回 -1。
F.e | For input= Earth, expected output would be: 0
For input = venus, expected output: 2
binary search 是此任务的必备项。
我什至没有给你我的代码,因为它甚至不起作用。我知道二进制搜索是如何工作的,但不知道如何在字典列表中使用它。
PS。您不必编写整个代码,只需帮助我如何在字典列表中实现二元搜索。
【问题讨论】:
-
该列表既没有按名称排序,也没有按密度排序。因此二进制搜索不适用于它。
-
是的,我没有注意到。如果按名称排序怎么办? {“名称”:“地球”,“密度”:5.427},{“名称”:“火星”,“密度”:5.513},{“名称”:“金星”,“密度”:5.204},跨度>
-
那么就可以对名称进行二分搜索(但不是密度)
-
参见stackoverflow.com/questions/9501337/… 以了解实现(只是您将使用
array[mid]["name"]进行比较)。 stackoverflow.com/questions/212358/… 是内置解决方案,也可能适用。 -
您说您没有显示您的代码,因为它不起作用,但这是人们在 Stack Overflow 上所做的,帮助修复损坏的代码 :) 所以请将其添加到您的问题中。
标签: python python-3.x dictionary binary-search