Python: создание словаря для поиска в - PullRequest
0 голосов
/ 01 марта 2012

Я пишу код, в котором я хочу найти файл данных со словами - словарь. Просто для удовольствия! Идея состоит в том, чтобы определить несколько букв, и тогда программа найдет слова, содержащие точные данные. Я уже написал код и преуспел, но он действительно нуждается в некоторых корректировках, чтобы получить правильный вывод.

Это кодовый блок:

def findword():

letters = set(str(raw_input("Type letters: ")))

for item in wordlist:      # already defined list containing the words
    if letters >= set(item):
        if len(item) <= len(letters):
            print item

Я использую набор для сравнения букв со списком слов. Проблема заключается в том, что на выходе могут быть слова, содержащие две одинаковые буквы, хотя входные данные могут содержать только одну из этих конкретных букв. Итак, как я могу убедиться, что выходные данные будут точными входными буквами, но не будут расположены одинаково? Буду признателен, если вы найдете время, чтобы помочь мне с этим! Спасибо!

Alex

Ответы [ 2 ]

1 голос
/ 01 марта 2012

Я интерпретирую ваш вопрос так, что если ввод, например, abc, вы хотите соответствовать cba или bca, но не abcd или abcc.Таким образом, в основном вы хотите найти анаграммы.

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

from collections import defaultdict

def make_letter_dict(word):
  letters = defaultdict(int)
  for c in word:
    letters[c] += 1

letters = make_letter_dict(raw_input("Letters: "))
words = (w for w in wordlist if make_letter_dict(w) == letters)
0 голосов
/ 01 марта 2012

Если вы просто хотите изменить расположение вывода, генерируйте два случайных числа между 0 и len (outputStr-1) / 2 и между len (outputStr-1) / 2 + 1 и len (outputStr) -1 поменяйте их местами.

...