我创建了一个函数来查找文本文件中最长的单词,并在文本文件中找到可以由9个字母组成的最长单词。我是python的新手,我正在创建一个类似倒计时的游戏。
我创建了一个函数来查找文本文件中最长的单词。我现在想要的是创建python代码来找到可以用9个字母组成的最长的单词。
每封信只能使用一次。因此,从'qugteroda',我应该得到rag outou,愤怒,out out,out read,outout,readout。我正在使用python 2.2
def Words():
qfile=open('dict.txt','r')
longg=''
for line in qfile:
if len(line)>len(longg):
longg=line
return longg
答案 0 :(得分: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}
然后检查这些字母中的每一个是否都在你的有效字母dict中(确保计数也等于或小于允许的数量)。
然后,你找到最长的单词。
要找到单词中最长的组合,请创建一个递归函数,以构建符合字母约束的单词链。
答案 1 :(得分:1)
使用itertools获取排列:
list(itertools.permutations("qugteroda")
并且对于列表中的每个元素,检查字典文件中是否存在该单词。
您可以在广告系列中查看Trie的快速查询。
答案 2 :(得分:0)
1 /从字母创建一个排序字符串:
qugteroda -> adegoqrtu
the_letters = 'adegoqrtu'
2 /从单词文件中的所有单词创建一个列表,列表中应该包含开头长度最大的单词,最后单词应该小一些,这样可以加快搜索N个最大单词。
例如。 international, ragouted,facebook,outraged, outdare, outread, outrage,readout
这个单词列表不会包含单词,但包含单词的排序表示。将此search_dict存储在缓存或文件中以供进一步使用。
例如。 search_dict = ['aaeiilnnnortt' , 'adegortu' ,'abcefkoo','adegortu']
3 /要找到N个最大的单词,只需遍历search_dict,并继续添加the_letters
字符串中字符子集的单词。
一旦找到N个单词,您就可以退出循环。
答案 3 :(得分: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'))
答案 4 :(得分: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)
答案 5 :(得分:-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)