如何在功能Python中表示对象?

时间:2016-10-21 17:18:51

标签: python-3.x dictionary

我没有使用Python的经验。 这件事让我困扰了几天。我试图找到答案但不幸的是我没有成功。由于我正在从文件读取数据到内存中,我想方法将其表示为:

configure

这种方法对你来说如何?我怎么能迭代这个,并检查登录凭据?这是Python 3

2 个答案:

答案 0 :(得分:0)

您将学生定义为一个对象数组(每个都是dict):好

您将每个学生的属性定义为数组:不太好。

该数组是名为id的属性的值:令人困惑。

存储此类数据的更自然的方式如下:

 students = [{
     'id': 1,
     'firstname': 'Mary',
     'lastname': 'Jones',
     'password': 'secret'
 }, {
     'id': 2,
     'firstname': 'Liam',
     'lastname': 'McEnzie',
     'password': '9#4t&$X'
 }]

答案 1 :(得分:0)

如果您只想在给定常规命名方案的情况下将数据字段绑定在一起,namedtuple将会很有效。如果你试图保持一种纯粹的功能性方法,那么它具有不可变的额外好处:

from collections import namedtuple

# namedtuple is actually a class-factory:
Student = namedtuple("Students", ['id','firstname','lastname','password'])

# notice i'm using a plain tuple as a container - again, we want immutability
# for a functional approach
students = (
    Student(id=1, firstname='Rick', lastname='Sanchez', password='rickkyticky'),
    Student(id=2, firstname='Morty', lastname='Smith', password='password'),
    Student(id=3, firstname='Summer', lastname='Smith', password='tinkles')
)

你可以像Python中的其他任何东西一样迭代,使用for循环,或者,如果你更功能,使用理解(在这种情况下,实际上是一个生成器表达式被输入{{1构造函数):

tuple

>>> for s in students: ... print(s.password) ... rickkyticky password tinkles >>> passwords = tuple(s.password for s in students) >>> passwords ('rickkyticky', 'password', 'tinkles') >>> namedtuple更快,内存效率更高。