首页 > 解决方案 > 遍历字典

问题描述

问题:编写一个名为 find_value 的函数,它接受两个参数。第一个参数,称为 search_dict,是一个字典。第二个参数 val_2_find 是要在字典中查找的特定值。如果该值在字典中,它应该返回一个或多个相应键的列表(如果该值出现不止一次)。如果该值不在字典中,则应返回短语“该值不存在!”。

def find_value(search_dict, val_2_find):
    lst = []
     
    for k, y in search_dict.items():
        if val_2_find in y:
            lst.append(k)
        else:                 
            "That value does not exist!"       
                                             
    return lst
   
print(find_value({'key1': 'bird', 'key2': 'mineral', 'key3': 'animal', 'key4': 'animal', 'key5': 'animal'}, 'animal'))

问题:如何在不跳出 for 循环的情况下返回 Else?

标签: pythonpython-3.x

解决方案


您的代码存在一些问题。

在 for 循环中没有使用 else 语句。它没有做你打算做的事情。你在那里不需要它。一旦你遍历了整个字典,然后检查列表lst[]是否有任何值。如果是,则 return lstelse 返回 else 语句中的字符串。

第二个问题是使用in而不是==. 当您使用时in,like 值'wild animals'将被视为字符串的animal一部分。如果您只想具体说明,则必须使用.animalwild animalsanimal==

这是更新的代码:

def find_value(search_dict, val_2_find):
    lst = []
     
    for k, y in search_dict.items():
        if val_2_find == y: #changed from 'in' to '=='
            lst.append(k)

        #removed the else statement

    # changed the return statement to return lst or string based on value in lst
    return lst if lst else "That value does not exist!"   


                                         

您也可以进行列表理解。这会成功的。您可以检查值==(仅用于特定匹配)或in部分匹配。

这将检查值是否与animal任何给定键的值完全匹配:

def find_value(search_dict, val_2_find):
    lst = [k for k,v in search_dict.items() if val_2_find == v]
     
    return lst if lst else "That value does not exist!"       
   
print(find_value({'key1': 'bird', 'key2': 'mineral', 'key3': 'wild animals', 'key4': 'animal', 'key5': 'animals'}, 'animal'))

这个的输出将返回如下

['key4']

注:key3wild animalskey5animals

下面的代码正在使用in并将检查animal值中的部分匹配。

def find_value(search_dict, val_2_find):
    lst = [k for k,v in search_dict.items() if val_2_find in v]
     
    return lst if lst else "That value does not exist!"       
   
print(find_value({'key1': 'bird', 'key2': 'mineral', 'key3': 'wild animals', 'key4': 'animal', 'key5': 'animals'}, 'animal'))

的输出animal是:

['key3', 'key4', 'key5']

的输出human是:

That value does not exist!

推荐阅读