我没有使用Python的经验。 这件事让我困扰了几天。我试图找到答案但不幸的是我没有成功。由于我正在从文件读取数据到内存中,我想方法将其表示为:
configure
这种方法对你来说如何?我怎么能迭代这个,并检查登录凭据?这是Python 3
答案 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
更快,内存效率更高。