我要做的是获取一个文本文件并返回一个包含该文件中的anagrams(当按字母顺序重新排列时生成一个新词的单词)的字典。因此,如果文件包含单词dub和bud,那么代码应该创建一个键bdu,并将字符串dub和bud附加到它们的元组或列表中。你知道吗
现在,我的代码输出的正是我想要的,只是不是一个键有多个值,而是每个值都有相同的键。回到上一个例子,我得到dub的键bdu,然后是bud的另一个键bdu。如何删除相同的键并将键值合并到一个键?你知道吗
def anagrams(f):
'''takes a file and returns a list of anagrams in the file'''
wordget = open(f).read().lower().split()
dic = {}
for w in wordget:
if ("".join(sortword(w))) in wordget:
dic = {("".join(sortword(w))):w}
for key in dic.keys():
print "'%s': %s" % (key, dic[key])
return None
任何帮助都将不胜感激。我希望能找到一个运行速度也很快的解决方案,即使是包含上万个单词的文件(如书籍)
这个
每次都用新字典替换
dic
。您应该插入键或附加到列表可以使用defaultdict整理
if
/else
块,如GrantJ的答案所示collections包中Python的defaultdict类型对这类事情很有用。你知道吗
defaultdict初始化接受初始化对象的函数。在这种情况下,我们初始化一个空列表,可以立即追加它。你知道吗
您可能还发现pprint模块很有用。它会很好地格式化你的单词列表。你知道吗
相关问题 更多 >
编程相关推荐