在Python中用字典匹配输入字母

2024-05-13 20:18:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试做一个程序,它将从一个.txt文件中读入单词,并让用户输入自己选择的字母,程序将给出所有匹配项的打印输出。在

到目前为止我得到的是:

fil = open("example.txt", "r")
words = fil.readlines()
letters = raw_input("Type in letters: ")
compare = set(letters)

lista = []
for a_line in words:
    a_line = a_line.strip()
    lineword = set(a_line)
    if compare >= lineword:
        lista.append(rad)


print lista

现在这只在一定程度上起作用。它确实将用户输入与.txt文件的内容相匹配,但我希望它更精确。例如: 如果我加上“hrose”,它会发现我是“horse”,但它也会找到我是“roses”的两个s,因为它只比较元素而不是数量

如何使程序只使用指定的字母?在


Tags: 文件用户in程序txt字母line单词
3条回答

您可以使用Counter

from collections import Counter

def compare(query, word):
    query_count = Counter(query)
    word_count = Counter(word)
    return all([query_count[char] >= word_count[char] for char in word])

>>> compare("hrose", "rose")
True
>>> compare("hrose", "roses")
False

您可以映射一个映射字典,其中key是单词中的字母,value是单词中出现的次数。 现在比较两本字典。在

fil = open("example.txt", "r")
words = fil.readlines()
letters = raw_input("Type in letters: ")
compare = list(letters)
letter_dict = {}
for letter in compare:
    try:
        letter_dict[letter] += 1
    except KeyError:
        letter_dict[letter] = 0

lista = []
for a_line in words:
    a_line = a_line.strip()
    lineword = list(a_line)
    word_dict = {}
    for letter in lineword:
        try:
            word_dict[letter] += 1
        except KeyError:
            word_dict[letter] = 0
    flag = True
    for key, value in letter_dict.items():
        if key not in word_dict or word_dict[key] < value:
           flag = False 
           break;
    if flag:
           lista.append(a_line)  

print lista

Counters是你的朋友吗

from collections import Counter

fil = open("example.txt", "r")
words = [(a.strip(), Counter(a.strip())) for a in fil.readlines()]

letters = raw_input("Type in letters: ")
letter_count = Counter(letters)

word_list = []
for word, word_count in words:
    if all([letter_count[char] >= word_count[char] for char in word]):
        word_list.append(word)

print word_list

看看评论,你可能只想要精确的匹配,如果是这样,你甚至不需要计数器

^{pr2}$

相关问题 更多 >