如何在值为列表的字典中查找指定值并删除,优化输出结果
解决字典中列表值的查找与单次结果输出问题
你的核心需求是:对每个目标名字,判断它是否存在于字典的任意一个列表中,仅输出一次判断结果,同时找到后从对应列表中删除该名字。
原代码问题分析
你当前的代码会遍历字典的每个键(也就是每个列表),对每个目标名字输出一次true或false,所以每个名字会输出与字典键数量相同的结果。这是因为嵌套循环的逻辑是先遍历名字,再遍历字典的每个列表,导致每个名字对应多次输出。
修改后的代码
dictionary = {'nyu': ['marie', 'taylor', 'jim'], 'msu': ['tom', 'josh'], 'csu': ['tyler', 'mark', 'john']} class example: def get_names(self, name_list): for name in name_list: found = False # 遍历字典的每个列表,查找当前名字 for lst in dictionary.values(): if name in lst: lst.remove(name) found = True break # 找到后停止遍历其他列表 # 每个名字只输出一次结果 print(f"{name} {'true' if found else 'false'}") def main(): name_list = ['marie', 'tom', 'jane'] e = example() e.get_names(name_list) main()
代码说明
- 遍历目标名字列表时,为每个名字初始化
found标记,默认值为False。 - 遍历字典的所有列表(用
dictionary.values()直接获取列表,无需遍历键),如果找到目标名字:- 从该列表中删除名字
- 将
found设为True - 用
break终止后续遍历(已经找到,无需继续检查其他列表)
- 遍历完所有列表后,根据
found的值,对当前名字输出一次判断结果。
运行结果
marie true tom true jane false
内容的提问来源于stack exchange,提问作者Squilliam
相关产品推荐
相关产品推荐

