注意:我使用的是python3.4
我目前有一个包含以下对象的列表:
class word(object): #object class
#each word object has 3 attributes (self explanatory)
def __init__(self, originalWord=None, azWord=None, wLength=None):
self.originalWord = originalWord
self.azWord = azWord #the originalWord alphabetized
self.wLength = wLength
我想遍历整个列表,看看两个连续的项是否具有相同的azWord属性。例如,bat和tab都会有azWord“abt”,所以它们都是anagrams。最终的目标是将anagrams分组并打印到一个文件中。列表按单词长度分组,每个列表按每个对象的单词字母顺序排列。如果单词是anagrams,我想把它们添加到一个临时列表中。我想通过比较我正在查看的当前项目和下一个项目来实现这一点。如果它们相同,我想将它们添加到临时列表中。当我遇到一个不再相同的项目时,我想将我的字谜集合打印到一个文件中,并开始一个新的临时列表以继续检查字谜。到目前为止,我已经做到了:
for row in results:
for item in row:
if <<current item is identical to next time>>:
tempList = []
<<add to tempList>>
else
tempList[:]=[]
我不太清楚如何构造这样的结构,使内容不会被写入两次(例如cat、tab、tab、abt)或在打印到文件之前删除内容。你知道吗
你可能在找这样的东西:
这与您最初的实现稍有不同,因为在上面的情况下,如果anagram无序(也就是说,所有anagram不必紧挨着彼此)。你知道吗
另一方面,您可以更有效地构建
word
类,如下所示:那么你的代码会是这样的:
详细阐述亚当·斯密的评论。。。你可能想要这样的东西:
所以如果你有以下的话
然后您将得到所需的分组(根据azWord排序):
相关问题 更多 >
编程相关推荐