1

テキスト ファイルで最長の単語を検索し、9 文字から作成できるテキスト ファイルで最長の単語を検索する関数を作成しました。私はpythonが初めてで、カウントダウンに似たゲームを作成しています。

テキスト ファイル内で最も長い単語を検索する関数を作成しました。私が今欲しいのは、9文字から形成できる最長の単語を見つけるためのPythonコードを作成することです.

各文字は一度しか使用できません。だから、「qugteroda」から、私はぼろぼろ、憤慨、大胆不敵、読み、怒り、読み上げを得る必要があります。私はpython 2.2を使用しています

    def Words():
           qfile=open('dict.txt','r')
           longg=''
           for line in qfile:
           if len(line)>len(longg):
             longg=line
           return longg
4

6 に答える 6

2

私はこのようなことをします:

from collections import Counter

def find_words(valid_letters):
    valid_letters = Counter(valid_letters)

    with open('dict.txt', 'r') as handle:
        for word in handle:
            letters = Counter(word.strip())

            if valid_letters >= letters:
                yield word

longest_word = max(find_words('qugteroda'), key=len)

その要点は、単語に含まれる文字を数えるということです。このようなもの:

>>> count_letters('test')
{'t': 2, 'e': 1, 's': 1}

そして、それらの文字のすべてが有効な文字辞書に含まれているかどうかを確認します (カウントが許可されたカウント以下であることも確認してください)。

次に、最も長い単語を見つけます。

単語の最長の組み合わせを見つけるには、文字の制約内に収まる単語のチェーンを構築する再帰関数を作成します。

于 2013-05-03T19:04:29.530 に答える
1

itertools を使用して順列を取得します。

list(itertools.permutations("qugteroda")

リスト内のすべての要素について、その単語が辞書ファイルに存在するかどうかを確認します。

ディクショナリで高速検索用のTrieを確認できます。

于 2013-05-03T19:06:06.190 に答える
0

1/文字からソートされた文字列を作成します:

qugteroda ->  adegoqrtu
the_letters = 'adegoqrtu'

2/ word ファイル内のすべての単語からリストを作成します。リストには、最初に最大の長さの単語があり、最後に小さい単語が含まれている必要があります。これにより、N 個の最大の単語の検索が速くなります。

例えば。international, ragouted,facebook,outraged, outdare, outread, outrage,readout

この単語のリストには単語がそのまま含まれているのではなく、単語のソートされた表現が含まれています。今後使用するために、この search_dict をキャッシュまたはファイルに保存します。

例えば。search_dict = ['aaeiilnnnortt' , 'adegortu' ,'abcefkoo','adegortu']

3/ N 個の最大の単語を見つけるには、search_dict をループして、the_lettersstring 内の文字のサブセットである単語を追加し続けます。N 個の単語が見つかったら、ループを終了できます。

于 2013-05-03T19:26:27.050 に答える
0
with open('text.txt') as file:
    data=file.read().split()
    max=len(max(data,key=len ))
    print(max)
    res=[word for word in data if len(word)==max]
    print(res)
于 2020-04-27T16:48:05.700 に答える
-2

私はこの質問が1年前のものであることを知っていますが、これを試してください:

'''単語のリストを取り、最も長い単語の長さを返す関数 find_longest_word() を書いてください。'''

a = ['mamao', 'abacate', 'pera', 'goiaba', 'uva', 'abacaxi', 'laranja', 'maca']


def find_longest_word(a):

    d = []
    for c in a:
        d.append(len(c))
        e = max(d)  #Try "min" :D
    for b in a:
        if len(b) == e:
            print "Length is %i for %s" %(len(b), b)
于 2014-08-30T03:39:11.540 に答える