簡體   English   中英

在Python中從.txt文件向字典添加字謎?

[英]Adding anagrams to a dictionary from a .txt file in Python?

我有一個文本文件,該文件是一長串單詞,沒有空格,例如“ neuropsychologicalneuropsychologistneuropsychologyneuropsychopathic”等。我正在嘗試構建一個程序,該程序將使用輸入的單詞並檢查.txt文件中該單詞的任何字謎,然后將其添加到一本字典。

到目前為止,我想出的代碼是打印出words.txt中包含1個排列的1個字典。

anagram_dict  = {}

def anagram(word):

    b = open('words.txt', 'r').readlines()
    text = ''.join(line.strip() for line in b)

    #print(len(text))

    for i in range(len(text)-len(word)):
        prop = text[i:i+len(word)]
        if all(char in word for char in prop): #and all(prop.count(char) == prop.count(word) for char in prop):
            anagram_dict[''.join(sorted(word))] = [prop]

    print(anagram_dict)

anagram("demand")

問題是它打印的排列不是一字謎(我輸入“需求”,期望“ madden”出來,但它打印文件中的“ amamad”,但不是字謎)我該如何制作它僅在排列是真正的字謎(只是重新排列相同的字母)時才打印字典?

我認為問題可能在於“如果all(prop中的char為單詞char):#和all(prop中的char.prop.count(char)== prop.count(word)):”

特別是在運行時被注釋掉的部分只會打印一個空字符串。

很長的歉意,我只是想確保我自己解釋了一下。 謝謝你的幫助。

all(char in word for char in prop)只是檢查word所有字母是否都在prop 需求的所有字母是"present""madden" ,所以它會在搜索結果中。

all(prop.count(char) == prop.count(word) for char in prop)有問題(可能是拼寫錯誤)。

它應該all(prop.count(char) == word.count(char) for char in prop)


還有一個更好的選擇,檢查propword排序版本是否相同。

sword = ''.join(sorted(word))
anagram_dict[sword] = []
for i in range(len(text)-len(word)):
    prop = text[i:i+len(word)]
    if sword == ''.join(sorted(prop)):
        anagram_dict[sword].append(prop)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM