Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/342.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
与Python中的词典进行比较_Python_Python 3.x_Function_Dictionary - Fatal编程技术网

与Python中的词典进行比较

与Python中的词典进行比较,python,python-3.x,function,dictionary,Python,Python 3.x,Function,Dictionary,我有一个函数,它接受一个字符串,对单个字符进行计数,并将该字符与它显示的时间一起放入一个字符串中。例如: 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':

我有一个函数,它接受一个字符串,对单个字符进行计数,并将该字符与它显示的时间一起放入一个字符串中。例如:

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}
虽然当我将这个函数与两个不同的参数进行比较时,print语句输出的是True而不是False,它显然应该是True。谁能看一下吗。这是我的密码:

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.

您的代码存在一些问题。下面是一个更好的版本:

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
    !=<代码>单词
  • 您不必预先填充字典。您可以使用一点try/accept逻辑和一个dict来实现这一点,或者使用一个defaultdict,但计数器已经存在,所以让我们使用它

    • 您的代码存在一些问题。下面是一个更好的版本:

      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
        !=<代码>单词
      • 您不必预先填充字典。您可以使用一点try/accept逻辑和一个dict来实现这一点,或者使用一个defaultdict,但计数器已经存在,所以让我们使用它

      isanagram()
      aword
      作为参数,但在您使用的函数中,
      word
      不断添加到同一个dictionary对象中……旁白:python有一个计数器对象:
      来自集合导入计数器;c=计数器(“计算机”)
      isanagram()
      aword
      作为参数,但在您使用的函数中,
      word
      不断添加到同一个dictionary对象中……旁白:python有一个计数器对象:
      来自集合导入计数器;c=计数器(“计算机”)
      为什么要转换为
      bool()
      c1==c2
      已返回一个布尔值。为清晰起见,不需要。我认为它降低了清晰性。我看了看,想象一下
      计数器
      一定是在用
      \uuuu eq\uuuu
      做一些不可靠的事情。为什么要对
      bool()
      进行转换
      c1==c2
      已返回一个布尔值。为清晰起见,不需要。我认为它降低了清晰性。我看到这一点,想象一下
      计数器
      一定在某种程度上用
      \uuuuu eq\uuuuuu
      做了一些不可靠的事情。虽然只使用代码的答案可能会回答这个问题,但通过为代码提供上下文,您可以显著提高答案的质量,这也是代码工作的原因,以及一些参考文件供进一步阅读。From:“简洁是可以接受的,但更全面的解释更好。”虽然只有代码的答案可能会回答这个问题,但您可以通过提供代码的上下文、代码工作的原因以及一些文档参考以供进一步阅读,从而显著提高答案的质量。From:“简洁是可以接受的,但更全面的解释更好。”