Как я могу найти несколько ключевых слов в словарных ключах в Python - PullRequest
0 голосов
/ 16 января 2019

Я хочу найти словарь, в котором ключом является заголовок, а в качестве значения, назначенного этому ключу, - http-ссылка. Я хочу функцию, которая просматривает словарь, ищет ключ, который содержит все ключевые слова, которые я вставил в функцию, и если он не находит ключей с ключевыми словами, он ничего не возвращает. Вот этот диктат:

Я пробовал, если и в заявлениях, но пока ничего.

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'}

Допустим, я хочу найти черный и ультра, функция вернет третий элемент в словаре, потому что hoka one tor ultra high 2 wp boot - black' содержит ключевые слова черный и ультра. Если он не содержит все ключевые слова, которые я ввел, он ничего не даст в словаре.

Ответы [ 3 ]

0 голосов
/ 16 января 2019

Используя понимание списка, вы можете сделать что-то вроде этого:

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

если я позвоню с ключевым словом `black ', он вернет:

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

Это должно вернуть список URL, соответствующих ключам, содержащим keyword.

Если у вас более одного 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']

Они оба возвращают [] в случае, если ключи не найдены.

0 голосов
/ 16 января 2019

Если вы хотите создать функцию, которая берет список ключевых слов и проверяет, что каждое ключевое слово представлено в значении, вы можете сделать что-то вроде.

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
0 голосов
/ 16 января 2019

Вы можете перебирать ключи словаря так:

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