ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

试图理解嵌套字典中的搜索

2019-11-09 01:56:29  阅读:9  来源: 互联网

标签:python-3-x dictionary python



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

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.我本来以为对于key来说,addressBook.items()中的值将遍历这些值以及这些key.为什么不呢?我该如何解决?

解决方法:

当您在值中使用searchString时,您仅在检查该值字典的键.

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

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正在检查子字符串,而不是完全匹配的字符串



标签:python-3-x,dictionary,python

专注分享技术,共同学习,共同进步。侵权联系[admin#icode9.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有