如何在字典结构中传递名称作为键?

2024-04-26 22:03:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在写电话簿的二叉搜索树。问题是当我试图写主代码时。我尝试使用字典数据结构,但我不知道如何将联系人姓名作为键。我想写任何名字,得到一个电话号码作为一个值。你知道吗

它给了我一个错误

Traceback (most recent call last):
  File "FastSort.py", line 22, in <module>
    print(binarySearch(phonebook, "John"))
  File "FastSort.py", line 8, in binarySearch
    if alist[midpoint] == item:
KeyError: 1

这是一个密码

def binarySearch(alist, item):
       first = 0
       last = len(alist)-1
       found = False

       while first<=last and not found:
           midpoint = (first + last)//2
           if alist[midpoint] == item:
               found = True
           else:
            if item < alist[midpoint]:
                  last = midpoint-1
            else:
                first = midpoint+1
                return found

phonebook = {}
phonebook["John"] = 938477566
phonebook["Jack"] = 938377264
phonebook["Jill"] = 947662781

print(binarySearch(phonebook, "John"))
print(binarySearch(phonebook, "Jack"))

Tags: pyiflineitemjohnfilefirstlast
1条回答
网友
1楼 · 发布于 2024-04-26 22:03:23

您的解决方案(如果alist实际上是一个排序列表)非常接近,所以我想我可以帮您解决一些问题:

import random

def binarySearch(alist, item):
    first = 0
    last = len(alist)-1

    while first<=last:
        midpoint = (first + last)//2
        print midpoint
        if alist[midpoint][0] == item:
            return alist[midpoint]
        else:
         if item < alist[midpoint][0]:
               last = midpoint-1
         else:
             first = midpoint+1
    return False

items = []
items.append(("John", 938477566))
items.append(("Jack", 938377264))
items.append(("Jill", 947662781))

items = sorted(items)    

print(binarySearch(items, "John"))
print(binarySearch(items, "Jack"))
print(binarySearch(items, "Jill"))

相关问题 更多 >