我正在尝试创建一个列表字典,其中键是字谜,而值(列表)包含该字谜中所有可能的单词。
所以我的dict应该包含这样的东西
{'aaelnprt': ['parental', 'paternal', 'prenatal'], ailrv': ['rival']}
可能的单词在.txt文件中。每个单词都用换行符分隔。实施例
Sad
Dad
Fruit
Pizza
当我尝试编码时会导致问题。
with open ("word_list.txt") as myFile:
for word in myFile:
if word[0] == "v": ##Interested in only word starting with "v"
word_sorted = ''.join(sorted(word)) ##Get the anagram
for keys in list(dictonary.keys()):
if keys == word_sorted: ##Heres the problem, it doesn't get inside here as theres extra characters in <word_sorted> possible "\n" due to the linebreak of myfi
print(word_sorted)
dictonary[word_sorted].append(word)
答案 0 :(得分:1)
如果&#34; word_list.txt&#34;中的每个字。之后是&#39; \ n&#39;那么你可以使用切片去掉这个词的最后一个字符。
word_sorted = ''.join(sorted(word[:-1]))
但如果&#34; word_list.txt&#34;中的最后一个字不是后跟&#39; \ n&#39;,那么您应该使用rstrip()
。
word_sorted = ''.join(sorted(word.rstrip()))
切片方法效率稍高,但对于这个应用程序,我怀疑你会注意到它们之间的区别,所以你可能只是玩安全和放大器。使用rstrip()
。
答案 1 :(得分:0)
使用rstrip()
,它会移除\n
字符。
...
...
keys == word_sorted.rstrip()
...
答案 2 :(得分:0)
您应该尝试在代码中使用.rstrip()函数,它会删除&#34; \ n&#34;
您可以在这里查看.rstrip()
答案 3 :(得分:0)
strip仅从字符串的开头或结尾删除字符。
您也可以使用替换语法,用其他内容替换换行符。
str2 = str.replace(&#34; \ n&#34;,&#34;&#34;)
答案 4 :(得分:0)
所以,我在这里看到一些问题,如何进入字典,我看到没有任务?显然,你只提供了一个片段,所以也许就是其他地方。
当您使用in
时,您还会使用循环(效率更高,确实更高)。
with open ("word_list.txt") as myFile:
for word in myFile:
if word[0] == "v": ##Interested in only word starting with "v"
word_sorted = ''.join(sorted(word.rstrip())) ##Get the anagram
if word_sorted in dictionary:
print(word_sorted)
dictionary[word_sorted].append(word)
else:
# The case where we don't find an anagram in our dict
dictionary[word_sorted] = [word,]