Подберите отдельные слова в строке к словарным ключам - PullRequest
0 голосов
/ 06 декабря 2018

Привет, я пытаюсь ввести строку, а затем разбить строку на отдельные слова.Уникальные слова, которые находятся в строке и также находятся в словарных ключах «содержимого», получают соответствующие значения из словаря «файлы».

Как разделить входную строку, чтобы проверить отдельные слова по ключам словаря «концепт» и, если возможно, вернуть слова в строке, а не ключи словаря?

Я попытался разбить строку на список, а затем передать значения списка непосредственно в словарь, но очень быстро заблудился (это переменные, закомментированные вверху. Любая помощь приветствуется. Спасибо

def concept(word):

# convert var(word) to list
#my_string_list=[str(i) for i in word]

# join list(my_string_list) back to string
#mystring = ''.join(my_string_list)

# use this to list python files
files    = {1:"file0001.txt",
            2:"file0002.txt",
            3:"file0003.txt",
            4:"file0004.txt",
            5:"file0005.txt",
            6:"file0006.txt",
            7:"file0007.txt",    
            8:"file0008.txt",
            9:"file0009.txt"}

# change keys to searchable simple keyword phrases. 
concepts = {'GAMES':[1,2,4,3,3],
            'BLACKJACK':[5,3,5,3,5],
            'MACHINE':[4,9,9,9,4],
            'DATABASE':[5,3,3,3,5],
            'LEARNING':[4,9,4,9,4]}

# convert to uppercase, search var(mystring) in dict 'concepts', if not found return not found"
if word.upper() not in concepts:
    print("{}: Not Found in Database" .format(word)) not in concepts
    return

# for matching keys in dict 'concept' list values in dict 'files'
for pattern in concepts[word.upper()]:
    print(files[pattern])


# return input box at end of query        
while True:
    concept(input("Enter Concept Idea: "))
    print("\n")

1 Ответ

0 голосов
/ 06 декабря 2018

Предполагая, что ввод представляет собой список слов, разделенных пробелами, которые вы можете сделать:

def concept(phrase):

    words = phrase.split()

    # use this to list python files
    files = {1: "file0001.txt",
             2: "file0002.txt",
             3: "file0003.txt",
             4: "file0004.txt",
             5: "file0005.txt",
             6: "file0006.txt",
             7: "file0007.txt",
             8: "file0008.txt",
             9: "file0009.txt"}

    # change keys to searchable simple keyword phrases.
    concepts = {'GAMES': [1, 2, 4, 3, 3],
                'BLACKJACK': [5, 3, 5, 3, 5],
                'MACHINE': [4, 9, 9, 9, 4],
                'DATABASE': [5, 3, 3, 3, 5],
                'LEARNING': [4, 9, 4, 9, 4]}

    for word in words:
        # convert to uppercase, search var(mystring) in dict 'concepts', if not found return not found"
        if word.upper() not in concepts:
            print("{}: Not Found in Database".format(word))
        else:
            # for matching keys in dict 'concept' list values in dict 'files'
            for pattern in concepts[word.upper()]:
                print(files[pattern])

concept("games blackjack foo")

Выходные данные

file0001.txt
file0002.txt
file0004.txt
file0003.txt
file0003.txt
file0005.txt
file0003.txt
file0005.txt
file0003.txt
file0005.txt
foo: Not Found in Database

Строка words = phrase.split() разделяетстроковая фраза на пробелах.Чтобы проверить, есть ли слово в словаре, вам нужно сделать это по одному за раз, поэтому цикл for word in words повторяется над словами фразы.

Далее

  1. Как проверить, существует ли ключ в словаре?
  2. Разделить строку разделителем в python
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...