解析嵌套在字典中的列表以查找 Python 中具有相似字符的单词

Parsing a list nested within a dictionary for words with similar characters in Python

作为我的第一个个人项目,我正在构建一个 Wordle“求解器”,它会先猜出一个单词,然后输入单词中正确的字母,然后在单词列表中搜索具有相似字符的单词。为此,我将每个单词存储在字典中,键是单词,值是单词中的每个字符,即闪避:[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")

我很确定这个问题与我的代码解析字典中的整个列表而不是每个单独的字符有关,但即使我尝试输入整个单词,即输入正确的字母:do d g e;我仍然没有任何输出。

如果有人能让初学者走上正轨,将不胜感激。

您可能希望比较整个列表,而不是 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

检查用户的猜测是否是以下任何单词的 subset

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)]