Привет это мой первый пост. Я создал свою программу так, что она печатает все анаграммы в убывающем размере. Однако он также печатает все оставшиеся слова, у которых нет анаграмм, чего я не хочу делать. Я также задавался вопросом, есть ли, возможно, более эффективный способ сделать это, поскольку мой путь кажется довольно окольным. Пожалуйста помоги!
import time
start_time = time.time()
def wordIterator(dictionaryFilename):
with open(dictionaryFilename,'r') as f:
for line in f:
word = line.strip()
yield word
def largestAnagram(words):
import collections
d = collections.defaultdict(list)
for word in words:
sortedWord = str(sorted(word))
d[ hash(sortedWord) ].append(word)
maxKey = max( d.keys(), key = lambda k : len(d[k]) )
while (maxKey != 0):
maxKey = max( d.keys(), key = lambda k : len(d[k]) )
print(d[maxKey])
del d[maxKey]
return d[maxKey]
ter = wordIterator( 'dictionary.txt' )
print largestAnagram(ter)
end_time = time.time()
print("Elapsed time was %g seconds" %(end_time-start_time))