1

我创建了一个函数来查找文本文件中的最长单词,并在可以由 9 个字母组成的文本文件中查找最长的单词。我是 python 新手,我正在创建一个类似于倒计时的游戏。

我创建了一个函数来查找文本文件中最长的单词。我现在想要的是创建 python 代码来查找可以由 9 个字母组成的最长单词。

每个字母只能使用一次。因此,从“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_letters字符串中字符子集的单词。一旦找到 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 回答
0

我会做这样的事情:

def longest_word(filename):
with open(filename, 'r') as infile:
          words = infile.read().split()
print(words)    #  return list ['What', 'is', 'Python', 'language?', 'Python', ……..]
max_len = len(max(words, key=len))
return [word for word in words if len(word) == max_len]
print(longest_word('test.txt'))
于 2018-08-09T16:16:16.077 回答
-2

我知道这个问题已经有一年了,但是,试试这个:

'''编写一个函数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 回答