Python 类型错误:字段';教室';应为数字,但得到(4,)

Python 类型错误:字段';教室';应为数字,但得到(4,),python,python-3.x,django,django-models,Python,Python 3.x,Django,Django Models,我有一个数组。每个嵌套数组都包含有关学生的信息。然后我对它进行迭代,将每个数组保存到一个student对象中,并将其持久化到我的DB中 students = [ ["James", "Smith", 4, 10], # more students here ] for s in students: student = Student() student.first_name = s[0], student.last

我有一个数组。每个嵌套数组都包含有关学生的信息。然后我对它进行迭代,将每个数组保存到一个student对象中,并将其持久化到我的DB中

students = [
    ["James", "Smith", 4, 10],
    # more students here
]

for s in students:
    student = Student()
    student.first_name = s[0],
    student.last_name = s[1],
    student.classroom = s[2],
    student.grade1 = s[3],
    student.save()
学生
类中的
教室
字段定义为
浮动字段

我发现以下错误:

TypeError:字段“教室”应为数字,但得到(4,)

这可能是什么原因


编辑1:typo

尾随逗号创建元组

student.first_name = s[0],
应该是

student.first_name = s[0]
你可以在这里阅读更多关于这种奇怪语法的内容--

一个特殊的问题是构造包含0或1的元组 items:语法有一些额外的怪癖来适应这些。空的 元组由一对空括号构成;具有 一项是通过在值后面加逗号(不是逗号)来构造的 足够将单个值括在括号中)。丑陋,但是 有效


尾随的逗号创建元组

student.first_name = s[0],
应该是

student.first_name = s[0]
你可以在这里阅读更多关于这种奇怪语法的内容--

一个特殊的问题是构造包含0或1的元组 items:语法有一些额外的怪癖来适应这些。空的 元组由一对空括号构成;具有 一项是通过在值后面加逗号(不是逗号)来构造的 足够将单个值括在括号中)。丑陋,但是 有效


正如@match所说,在设置变量值时,后面有逗号。去掉这些,你应该是好的。例如:

student.first_name = s[0]
student.last_name = s[1]
student.classroom = s[2]
student.grade1 = s[3]
student.save()

设置变量之间没有逗号。

正如@match所说,设置变量值时,后面有逗号。去掉这些,你应该是好的。例如:

student.first_name = s[0]
student.last_name = s[1]
student.classroom = s[2]
student.grade1 = s[3]
student.save()

设置变量之间没有逗号。

我已经编辑了您的代码,但我认为您的意思是这样做:

s = [
    ["James", "Smith", 4, 10],
    # more students here
]

class Student:
 
    def __init__(self,first_name,last_name,classroom,grade):
        """ Create a new point at the origin """
        self.first_name = first_name
        self.last_name = last_name
        self.classroom = classroom
        self.grade = grade


student = Student(s[0][0],s[0][1],s[0][2],s[0][3])

from pprint import pprint
pprint(vars(student))

我已经编辑了您的代码,但我认为您的意思是这样做:

s = [
    ["James", "Smith", 4, 10],
    # more students here
]

class Student:
 
    def __init__(self,first_name,last_name,classroom,grade):
        """ Create a new point at the origin """
        self.first_name = first_name
        self.last_name = last_name
        self.classroom = classroom
        self.grade = grade


student = Student(s[0][0],s[0][1],s[0][2],s[0][3])

from pprint import pprint
pprint(vars(student))

问题是所有变量行上的尾随逗号。您实际上是将值设置为
4,
使用float(s[2])不起作用@匹配如何更改行以使其工作?删除逗号。问题是所有变量行上都有尾随逗号。您实际上是将值设置为
4,
使用float(s[2])不起作用@匹配如何更改行以使其工作?删除逗号。