作為我的第一個個人專案,我正在構建一個 Wordle “解算器”,它會先猜出一個單詞,然后輸入單詞中正確的字母,然后在單詞串列中搜索具有相似字符的單詞。為此,我將每個單詞存盤在字典中,鍵是單詞,值是單詞中的每個字符,即 dodge: [d, o, d, g, e]。我目前正在嘗試讓代碼運行,該代碼通過字典的值進行決議,以將字符與輸入的字母匹配,但對于如何將字典中的串列作為回圈進行搜索感到困惑。
這是我輸入正確字母的代碼:
correct_letters_1 = list(letters for letters in input("Input corrects letters: ").strip().split())
這是我決議字典的嘗試之一:
for letters in correct_letters_1:
if letters in word_dictionary.values():
print("yes")
我很確定這個問題與我的代碼決議字典中的整個串列而不是每個單獨的字符有關,但即使我嘗試輸入整個單詞,即 Input Correct Letters: dodge; 我仍然沒有任何輸出。
如果有人可以讓初學者走上正確的道路,那將不勝感激。
uj5u.com熱心網友回復:
您可能希望比較整個串列,而不是letters:
correct_letters_1 = list(input("Enter correct letters: ").strip())
# correct_letters_1 is a whole list
if correct_letters_1 in word_dictionary.values():
print("yes")
# Inputting "abc"
>>> correct_letters_1
['a', 'b', 'c']
>>> word_dictionary
{'abc': ['a', 'b', 'c']}
>>> correct_letters_1 in word_dictionary.values()
True
要檢查用戶的猜測是否是任何單詞的子集:
correct_letters_1 = list(input("Enter correct letters: ").strip())
let_set = set(correct_letters_1)
word_dictionary = {'abc': ['a', 'b', 'c'],
'abcde': ['a', 'b', 'c', 'd', 'e'],
'ab': ['a', 'b'],
'test': ['t', 'e', 's', 't']}
# Check to see if correct_letters_1 is a subset of any word in the dictionary
close_words = ["".join(x) for x in word_dictionary.values() if let_set <= set(x)]
可以簡化為:
correct_letters_1 = input("Enter correct letters: ").strip()
let_set = set(correct_letters_1)
words = ["abc", "test", "ab"]
# Check to see if correct_letters_1 is a subset of any word in the list words
close_words = [x for x in words if let_set <= set(x)]
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/456013.html
下一篇:更新字典串列中的專案
