如何在Python的字典键中找到多个关键字

时间:2019-01-16 18:24:03

标签: python dictionary keyword-search

我想搜索一个以标题为键,以http链接为键值的字典。我想要搜索字典的函数,搜索包含我放入该函数的所有关键字的键,如果它没有找到带有关键字的键,则不返回任何内容。这是字典:

我已经尝试过if和in语句,但是到目前为止还没有。

dict = {
   'adidas originals yung-1 - core black / white':
        'https://kith.com/products/adidas-originals-yung-1-core-black-white',
   'adidas originals yung-1 - grey one / white': 
        'https://kith.com/products/adidas-originals-yung-1-grey-one-white',
   'hoka one tor ultra high 2 wp boot - black': 
        'https://kith.com/products/hoka-one-tor-ultra-high-2-wp-black'}

假设我要搜索black和ultra,该函数将返回字典中的第三项,因为hoka one tor ultra high 2 wp boot - black'包含关键字black和ultra。如果它不包含我输入的所有关键字,则字典中将不会返回任何内容。

3 个答案:

答案 0 :(得分:0)

您可以像这样遍历字典的键:

for item in dic:
    if searchterm in item:
        print('do something')

答案 1 :(得分:0)

使用列表理解功能,您可以执行以下操作:

def getUrl(keyword):
    return [dict[key] for key in dict.keys() if keyword in key]

如果我用`keyword ='black'称呼它,它将返回:

['https://kith.com/products/hoka-one-tor-ultra-high-2-wp-black', 'https://kith.com/products/adidas-originals-yung-1-core-black-white']

这应该返回与包含keyword的键相对应的url列表。

如果您有一个以上的keyword,则可以做到这一点:

def getUrl(keywords):
    return [dict[key] for key in dict.keys() if len([keyword for keyword in keywords if keyword in key])>0]

如果我用keywords = ['black','ultra']调用它,它将返回以下内容:

['https://kith.com/products/hoka-one-tor-ultra-high-2-wp-black', 'https://kith.com/products/adidas-originals-yung-1-core-black-white']

如果找不到密钥,它们都会返回[]

答案 2 :(得分:0)

如果要创建一个包含关键字列表并检查每个关键字是否以值表示的函数,则可以执行类似的操作。

keywords = ['black', 'ultra'] 

def dict_search(list_of_keywords):
    for key in dict.keys():
        if all(x in key for x in list_of_keywords):
            return(key)

In [1]: dict_search(keywords)
hoka one tor ultra high 2 wp boot - black