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

问题描述 投票:0回答:1

作为我的第一个个人项目,我正在构建一个 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;我仍然没有任何输出。

如果有人能让初学者走上正确的道路,我们将不胜感激。

python list dictionary parsing nested
1个回答
0
投票

您可能想要比较整个列表,而不是

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)]
© www.soinside.com 2019 - 2024. All rights reserved.