这个编程接收来自用户的输入,例如" aeoritre"并输出可以从这些字母中产生的任何单词。 dictionary.txt文件包含wordlist。
我的问题是如何输出字符串匹配的最长单词而不是打印所有单词?如果单词被绑定的时间最长,则只输出其中一个。提前谢谢!
from collections import Counter
words = []
def isAnAnagram(word, user):
word_counter = Counter(word)
input_counter = Counter(user)
return all(count <= input_counter[key] for key, count in word_counter.items())
def getAnagrams(user):
lister = [word for word in words if len(word) <= len(user) ]
for item in lister:
if isAnAnagram(item, user):
yield item
with open('Dictionary.txt', 'r') as f:
allwords = f.readlines()
f.close()
for x in allwords:
x = x.rstrip()
words.append(x)
inp = 1
while inp != "99":
inp = input("enter word:")
result = getAnagrams(inp)
print(list(result))
print(len(list(result)))
答案 0 :(得分:1)
一种简单的方法是按降序(反向)顺序按长度对结果列表进行排序并打印第一个元素:
ubuntu 14.04
答案 1 :(得分:0)
使用键(word)和值(len(word))创建一个字典,然后对字典进行排序并获取排序结果的最后一个值。
import operator
resultDict = {i: len(i) for i in list(result)}
sortedresult = sorted(resultDict.items(), key=operator.itemgetter(1))
print sortedresult[-1][0]