gpt4 book ai didi

python - 试图理解通过嵌套字典进行搜索

转载 作者:太空宇宙 更新时间:2023-11-03 15:45:13 25 4
gpt4 key购买 nike

我有一个存储在嵌套 dict 中的联系信息列表:

addressBook = {'Jim': {'name': 'James Marsh', 'address': '32 Morris Ave',
'phone': '654-987-3217'},
'Leanne': {'name': 'Leanne Moss', 'address': '37 Shamrock Lane',
'phone': '123-456-7890'},
'Chris': {'name': 'Christopher Philips', 'address': '49 Langley Court',
'phone': '321-654-9870'},
'Tim': {'name': 'Timothy Morris', 'address': '49 Langley Court',
'phone': '321-654-9870'}}

我正在尝试编写一个函数,该函数将在每个条目中搜索用户输入的搜索字符串。

def searchAllFields(addressBook):
searchString = input("Enter a string to search for (enter to cancel): ")
if searchString == "":
return
else:
for key, value in addressBook.items():
inside = False
for v in value.values():
if searchString in v:
inside = True
break
if searchString in key or inside:
print("The following contacts were found: ")
print(addressBook[key]['name'])
print(addressBook[key]['address'])
print(addressBook[key]['phone'] + '\n')
else:
print("No contact matching the string {} was found.".format(searchString))
return

我的函数很好地遍历字典,但它只在键中找到搜索字符串。例如,如果我在 Jim 中搜索字符串,我可以找到 James 的信息,但如果我的搜索字符串是 Lang,我希望能够找到 Chris。我原以为 for key, value in addressBook.items(): 会查看值和键。为什么不呢?我该如何解决这个问题?

最佳答案

当您执行 searchString in value 时,您只是在检查该 value 字典的键。

您需要第二个循环来检查嵌套字典的值

for key, value in addressBook.items():
inside = False
for v in value.values():
if searchString in v:
inside = True
break
if searchString in key or inside:

无关说明:searchString in key 正在检查子字符串,而不是完全匹配

关于python - 试图理解通过嵌套字典进行搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50321335/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com