如何检查一个字符串的字母是否在另一个字符串中

2024-05-13 17:48:00 发布

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

我有一个按字母顺序排列的单词列表,例如hello=ehllo 我该如何检查“blanagrams”这个词,它是除了1以外几乎所有字母都相似的单词。例如,管弦乐队变成管弦乐队。我只能想到这一部分。我有一个想法,你必须测试当前单词的每一个字母,看看它是否与另一个字母对应,如果是,那就是一个blanagram并创建一个字典,但我正在努力将它放入代码中

L = [list of alphabetically ordered strings]

for word in L:

     for letter in word:
        #confused at this part

Tags: of代码inhello列表for字典字母
3条回答

假设这类似于人工智能中常用的梯子游戏部分,并且您试图创建一个图,其中相邻节点作为可能的单词,而不是字典。在

d = {}
# create buckets of words that differ by one letter
for word in L:
    for i in range(len(word)):
        bucket = word[:i] + '_' + word[i+1:]
        if bucket in d:
            d[bucket].append(word)
        else:
            d[bucket] = [word]

史蒂文·鲁姆巴尔斯基的回答让我思考,还有另一种方法你可以用一个柜台来做这件事(+1表示收藏的使用,谢谢你激发了我的兴趣)

from collections import Counter
def diff_one(w,z):
    c=Counter(sorted(w+z)).values()
    c=filter(lambda x:x%2!=0,c)
    return len(c)==2

基本上所有匹配的字母都有一个偶数的计数器值。所以你把这些过滤掉,留下不匹配的。如果你有两个以上的不匹配,那么你就有问题了。在

from collections import Counter
def same_except1(s1, s2):
    ct1, ct2 = Counter(s1), Counter(s2)
    return sum((ct1 - ct2).values()) == 1 and sum((ct2 - ct1).values()) == 1

示例:

^{pr2}$

相关问题 更多 >