使用关键字查找项目

时间:2018-02-28 08:43:35

标签: python python-3.x

我想问这个问题。我一直在尝试编写一个程序,这个程序可以长时间有效地执行此操作但很难在任何地方使用。基本上我有一个字符串存储在字典中:

dic = {"a" : "Blue Jacket with buttons", "b" : "Green Jacket with a buttons",
      "c" : "Blue jacket"}

让我们说我想找到" b"但是用户并不确切知道它是如何存储在字典中的,因此他们输入了他们希望用来查找该项目的关键字。

keywords = "Blue, Jacket, Buttons"
keywords.split(",")

我如何使用关键字来查找" b"在字典里?我试着做一个if语句,但是我不能注意到#34; a"和" c"。如何使用关键字查找字典中的项目?

谢谢!

4 个答案:

答案 0 :(得分:1)

这是我的尝试,使用set函数。如果可以在相应的值中找到所有关键字,我们只选择密钥。

keywords = set([x.strip() for x in "Blue, Jacket, Buttons".lower().split(",")])
print([key for key, val in dic.items() if keywords <= set(val.lower().split())])

答案 1 :(得分:0)

我将以下代码作为示例。在这里,我寻找所有具有&#39; Blue&#39;他们的价值观。无论如何,正如COLDSPEED所说,字典的使用是非常不优化的。

dic = {"a" : "Blue Jacket with buttons", "b" : "Green Jacket with a buttons",
  "c" : "Blue jacket"}
keywords = "Blue, Jacket, Buttons"
keywords = keywords.split(",")
for key, value in dic.iteritems():
    if keywords[0] in value:
        print key

答案 2 :(得分:0)

代码如下:

def main():
    dic = {"a": "Blue Jacket with buttons", "b": "Green Jacket with a buttons",
           "c": "Blue jacket"}

    keywords = "Blue, Jacket, Buttons"
    keyword_items = [keyword.strip().lower() for keyword in keywords.split(",")]

    for key, value in dic.items():
        if all(keyword in value.lower() for keyword in keyword_items):
            print(key)

答案 3 :(得分:0)

您可以尝试使用difflib:

>>> import difflib
>>> dic = {"a" : "Blue Jacket with buttons", "b" : "Green Jacket with a buttons","c" : "Blue jacket"}
>>> keywords = "Blue, Jacket, Buttons"
>>> result = max((difflib.SequenceMatcher(a=keywords.lower(), b=value.lower()).ratio(),key) for key, value in dic.items())
>>> result
(0.8444444444444444, 'a')
>>> result[1]
'a'
相关问题