【问题标题】:Iterate list through a function keep returning Nonetype通过函数迭代列表不断返回 Nonetype
【发布时间】:2021-05-03 13:45:07
【问题描述】:

所以我试图迭代这个列表techno_list1 = ["C", "C#", "C++", "Java", "JavaScript", "Python", "Scala", "Oracle", "SQL Server", "MySQL Server", "PostgreSQL", "MongoDB"] 通过一个函数返回与下面列表中的关键字相关的作业数量是该函数:

def get_number_of_jobs(technology):
    number_of_jobs = 0
    page=0
    new_results=1
    while new_results>0:
        paras={"description":technology,"page":page}
        r=requests.get(baseurl,paras)
        new_results=len(r.json())
        page+=1
        number_of_jobs+=(len(r.json()))
         
    return technology,number_of_jobs

它返回一个像这样的元组('C', 239) ('C#', 50) ('C++', 32) ('Java', 138) ('JavaScript', 116) ('Python', 98) ('Scala', 94) ('Oracle', 18) ('SQL Server', 28) ('MySQL Server', 14) ('PostgreSQL', 22) ('MongoDB', 14) 所以我认为它应该是一个元组,但是当使用 type() 检查时,它一直返回<class 'NoneType'>

我希望它是 List 或 Tuple 无论如何都可以更改数据类型?

【问题讨论】:

  • 请使用以下代码更新您的问题:when checking using type()
  • 显示的函数只有一个返回路径;它不能返回None

标签: python list tuples data-science


【解决方案1】:

好的,这就是我遇到的:

techno_list1 = ["C", "C#", "C++", "Java",  "JavaScript", "Python", "Scala", "Oracle", "SQL Server", "MySQL Server", "PostgreSQL", "MongoDB"]
def number_of_each(techno_list):
    for x in techno_list:
        print(get_number_of_jobs(x))
print(type(number_of_each(techno_list1)))

那么结果:

('C', 239)
('C#', 50)
('C++', 32)
('Java', 138)
('JavaScript', 116)
('Python', 98)
('Scala', 94)
('Oracle', 18)
('SQL Server', 28)
('MySQL Server', 14)
('PostgreSQL', 22)
('MongoDB', 14)
<class 'NoneType'>

也许这是一个错误?

【讨论】:

  • 这不是问题的答案。如果您要添加其他详细信息,则应将它们编辑到原始问题中。 (这里唯一的错误是您认为 number_of_each() 能够返回 None 以外的任何内容,因为它不包含 return 语句。)
  • 对不起,我是新人,感谢您的回答!
【解决方案2】:

从您的详细阐述中,我可以看到您正在打印number_of_each(techno_list1) 的类型。

然而,这个函数目前没有返回任何东西,它只是打印出你通过get_number_of_jobs()获得的值。这就是它返回 &lt;class 'NoneType'&gt; 的原因。

我会在函数number_of_each() 之外创建一个列表,然后将项目添加到列表中以便稍后打印出来,试试这个:

techno_list1 = ["C", "C#", "C++", "Java",  "JavaScript", "Python", "Scala", "Oracle", "SQL Server", "MySQL Server", "PostgreSQL", "MongoDB"]
job_numb = []

def number_of_each(techno_list):
    for x in techno_list:
        job_numb.append(get_number_of_jobs(x))
        print(type(get_number_of_jobs(x))

print(job_numb)

现在打印的类型应该是&lt;class 'list'&gt; 用于job_numb&lt;class 'tuple'&gt; 用于返回get_number_of_jobs()job_numb 中的任何项目。

实际上,这并没有真正改变任何事情。您已经有一个由 get_number_of_jobs() 函数返回的元组。您只是错误地打印了正确的变量。

【讨论】:

    猜你喜欢
    • 2013-12-27
    • 2020-07-17
    • 2023-03-03
    • 2018-11-29
    • 1970-01-01
    • 2018-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多