首页 > 解决方案 > 无法从Python的输入中找到字典中是否存在值

问题描述

my_file = open("input.txt",'r')
d = {}
for line in my_file:
    key = line[0]
    if key not in d:
        d[key] = [line.strip("\n")]
    else:
        d[key].append(line.strip("\n"))

for key in d:
    print(key,d[key])
print("")
find_word = input("Search a word: ")
for value in d:
    if find_word in d.values():
       print("Word is found")
       break
    else:
        print("Word not found")
        break

我已经看到了关于这个问题的其他一些问题,但它们似乎比我的更复杂。我是初学者,我的代码总是返回“未找到”。

标签: python

解决方案


这实际上是您正在寻找的

find_word = input("Search a word: ")
found = False

for _list in d.values():

    for element in _list:

        if element.find(find_word) != -1:

            print('Found')
            found = True
            break

    if found:
        break
else:
    print('Not found')

当您使用关键字in执行搜索时,它需要完全匹配,因此如果您这样做'test' in ['test2', 'test3'],它将评估为 false,因为它不是完全匹配,最重要的是,您的字典键中的值是列表列表而不是1 级列表,例如:

dict_values([['text'], .... ['textn']])

导致条件为:

'word' in [[...], ..., [..]]

这永远不会匹配。

您需要一个辅助 for 在子列表中进行迭代,并find在另一个给定字符串中查找字符串序列,因为子列表中的项目是完整的行,允许部分匹配。


推荐阅读