python - 遍历字典
问题描述
问题:编写一个名为 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?
解决方案
您的代码存在一些问题。
在 for 循环中没有使用 else 语句。它没有做你打算做的事情。你在那里不需要它。一旦你遍历了整个字典,然后检查列表lst[]
是否有任何值。如果是,则 return lst
else 返回 else 语句中的字符串。
第二个问题是使用in
而不是==
. 当您使用时in
,like 值'wild animals'
将被视为字符串的animal
一部分。如果您只想具体说明,则必须使用.animal
wild animals
animal
==
这是更新的代码:
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']
注:key3
是wild animals
,key5
是animals
下面的代码正在使用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!
推荐阅读
- c++ - 构造函数中的部分模板推导
- javascript - 向机器人发送一个命令,该机器人发送一条被编辑的消息
- c - 为什么在回调函数指针时出现 EXC_BAD_ACCESS (code=EXC_I386_GPFLT)?
- c++ - 在哪里定义回调函数以便调用对象仍在范围内?
- javascript - 如何使用默认变量配置快速会话
- python - 将第一个单元格与其他行和计数匹配值进行比较
- rest - 对于 REST API 设计,是否可以支持条件 HTTP 标头的子集?
- ios - 如何让 SwiftUI 响应不同的设备?(迅速)
- javascript - ReactJS - 异步自动完成 API 响应处理
- python - 在 Python 中,如何使特定窗口保持在顶部?