你能建议在python中用干净的方式表示这个结构吗?
students = struct;
students(1).fname = 'john';
students(1).lname ='smith';
students(1).height = 180;
students(2).fname = 'dave';
students(2).lname = 'clinton';
students(2).height = 184;
谢谢!
答案 0 :(得分:2)
在Python中,您可以创建一个类(有点像结构但具有更多功能),如下所示:
class Student()
def __init__(self, fname, lname, height):
self.fname = fname
self.lname = lname
self.height = height
__init__函数描述了制作新学生记录所需的信息。 'self'参数告诉Python你想要在一个实例(一个实际的学生记录)而不是在类(这是学生记录的蓝图)上设置这些变量。然后,您可以按如下方式创建学生的实例:
my_student = Student('Space', 'Man', 180)
您可以创建许多这些实例并将每个实例附加到列表中:
all_students = [] # An empty list
all_students.append(my_student) # using the instance we've already created
all_students.append(Student('Jingle', 'Sting', 180)) # a new instance
然后,您可以按如下方式访问列表中的项目:
all_students[1]
通过创建一个类,您还可以创建适用于所有学生实例的方法。
class Student()
def __init__(self, fname, lname, height):
self.fname = fname
self.lname = lname
self.height = height
def get_height_in_meters(self):
return self.height / 100
并像这样使用它们:
my_student.get_height_in_meters()
您甚至可以使用适用于它们的方法直接从列表中访问学生记录:
all_students[1].get_height_in_meters()
答案 1 :(得分:1)
这可以通过创建字典列表来完成,如下所示:
students = [
{'fname': 'john', 'lname': 'smith', 'height': 180},
{'fname': 'dave', 'lname': 'clinton', 'height': 184}
]
然后,您可以通过students[n]
或第n位学生的特定字段students[n]['fname']
答案 2 :(得分:1)
使用namedtuple(s)列表:
import collections
harry = student(fname="harry", lname="Potter", height=160)
hermione = student(fname="hermione", lname="Granger", height=140)
students = [
harry,
hermione
]
print(students[0].fname)
print(students[1].fname)