首页 > 解决方案 > 函数内部声明的字典

问题描述

已经四处搜索,但无法找到这个非常基本的问题的解决方案,我希望有人能帮助启发我(如果我在某个地方错过了它,请道歉!)为什么必须count_letters在函数内而不是在函数外部声明下面的字典?

在第一个版本中,我能够正确声明address_count,但在第二个不正确的版本中,我无法在address_count返回时创建nonetype object of builtins module" error。任何知识将不胜感激!

正确的解决方案

 def counter (input_string):
    count_letters = {}
    for letter in input_string:
        if letter in count_letters:
                count_letters[letter] += 1
        else:
            count_letters[letter] = 1
    return count_letters

    address_count = counter(address)

不正确的解决方案

count_letters = {}

def counter(input_string):
    for letter in input_string: 
        if letter in alphabet: 
            if letter in count_letters:
                count_letters[letter] += 1
            else: 
                count_letters[letter] = 1

address_count = count_letters

标签: pythondictionary

解决方案


如果您调用该函数并删除未引用的字母变量,您的“不正确”解决方案才有效

count_letters = {}

def counter(input_string):
    for letter in input_string: 
        if letter in count_letters:
            count_letters[letter] += 1
        else: 
            count_letters[letter] = 1

counter("test")
print(count_letters)

推荐阅读