我有一个函数,它接受一个字符串来计算单个字符,并将该字符连同它出现的时间量放入一个字符串中。例如:
isanagram("surfer")
返回
w1 = {'a': 0, 'b': 0, 'c': 0, 'd': 0, 'e': 1, 'f': 1, 'g': 0, 'h': 0, 'i': 0, 'j': 0, 'k': 0, 'l': 0, 'm': 0, 'n': 0, 'o': 0, 'p': 0, 'q': 0, 'r': 2, 's': 1, 't': 0, 'u': 1, 'v': 0, 'w': 0, 'x': 0, 'y': 0, 'z': 0}
尽管当我将这个函数与两个不同的参数进行比较时,打印语句输出的是 True 而不是 False,这显然应该是。有没有人可以看看。这是我的代码:
alphabetlist = ['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z']
alphabetdict = {}
newalphadict = {}
def isanagram(aword):
for i in alphabetlist:
count = word.count(i)
alphabetdict[i] = count
return alphabetdict
print(isanagram("computer") == isanagram("science")) #outputting True. Should be outputting False.
答案 0 :(得分:1)
alphabetlist = ['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z']
def isanagram(word=''):
alphabetdict = {}
for i in alphabetlist:
count = word.count(i)
alphabetdict[i] = count
return alphabetdict
print(isanagram("computer") == isanagram("science")) #-> False
答案 1 :(得分:1)
您的代码存在一些问题。这是一个更好的版本:
from collections import Counter
def is_anagram(word1, word2):
c1 = Counter(word1)
c2 = Counter(word2)
return c1 == c2
is_anagram("computer", "science") # False
这解决了您当前代码的以下问题:
newalphadict
, alphabetdict
驻留在您的函数之外,因此每次调用 isanagram
时都会向其中添加字母(错误)is_anagram
比较两个单词。它可能应该使用两个词作为参数(没有别的)。aword
!= word