我有一个按字母顺序排列的单词L,例如hello = ehllo 我如何检查这个单词“blanagrams”,这是除了1之外几乎所有类似字母的单词。例如,乐团变成了orchester。我只能想到这一部分。我有一个想法,你必须测试当前单词的每个字母,看看它是否对应于另一个,如果是,它是一个blanagram并创建一个字典,但我很难把它放入代码< / p>
L = [list of alphabetically ordered strings]
for word in L:
for letter in word:
#confused at this part
答案 0 :(得分:2)
//////// feed.json ////////
{
"programme" : [
{
"title" : "Rick & Morty",
"startTime" : "19:00",
},
{
"title" : "News",
"startTime" : "19:30",
}
]
}
示例:
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
答案 1 :(得分:2)
史蒂文·伦巴尔斯基的回答让我思考,还有另一种方法可以通过一个计数器来做到这一点(+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
基本上所有匹配的字母都有一个偶数的计数器值。所以你过滤掉那些,然后留下不匹配的。如果你有超过2个不匹配,那么你有问题。
答案 2 :(得分:0)
假设这类似于AI中常用的梯形游戏部分,并且您尝试创建一个图形,其中相邻节点可能是单词,而不是字典。
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]