如何在字典中值存在指定项或值含指定字符串时输出对应键?
嘿,我来帮你搞定这两个字典查找的问题,结合你给出的代码和文件场景,咱们一步步来:
问题1:当字典中存在完全匹配的指定值时,打印对应的键
首先要注意你的字典值是列表类型(因为row[1:]会把每行除第一个元素外的内容做成列表)。如果要找某个列表完全等于目标值的情况,比如目标是['hello1', 'hello2', 'hello3'],对应的键是hello,可以用这段代码:
target_value = ['hello1', 'hello2', 'hello3'] # 替换成你要匹配的完整值列表 for key, value in d.items(): if value == target_value: print(f"{key}, {', '.join(value)}")
要是你的字典值是单个元素(不是列表),直接用if value == target_value就行,不过你的场景里是列表,得匹配整个列表内容。
问题2:当字典的值列表中包含指定字符串时,打印对应的键和该字符串
这应该是你示例里需要的场景(比如查找hello1),我们可以把文件读取和查找逻辑整合起来,代码如下:
import csv filename = "your_file.txt" # 替换成你的实际文件名 d = {} # 先读取制表符分隔的文件,构建字典 with open(filename) as document: for row in csv.reader(document, delimiter='\t'): if row: # 跳过可能存在的空行 d[row[0]] = row[1:] # 输入要查找的字符串,然后遍历字典匹配 target_str = input("请输入要查找的字符串:") # 比如输入hello1 for key, values in d.items(): if target_str in values: print(f"{key}, {target_str}")
用你的示例文件测试的话,输入hello1就会输出hello, hello1,完全符合你的需求。
额外小提示
- 要是需要忽略大小写查找,可以把判断改成
if target_str.lower() in [v.lower() for v in values] - 如果有多个键对应同一个目标字符串,这段代码会把所有匹配的结果都打印出来
内容的提问来源于stack exchange,提问作者Oskar
相关产品推荐
相关产品推荐

