用于保存表的数据类型

时间:2014-03-27 14:59:05

标签: java python

我想保存一个包含某些属性的记录的表, 例如

Name gender Age 
----------------
Josh Male   22

所以我可以轻松访问所有记录并更改属性, 保存这些数据最简单的方法是什么? , 在C ++中我使用双向量。 如果你有python或java的解决方案请告诉我:)

2 个答案:

答案 0 :(得分:1)

您可以尝试使用dictionary,如下所示:

attributes = ['Name', 'Gender', 'Age']
values = ['Josh', 'Male', 22]

>>> my_dict = dict(zip(attributes,values))
>>> print my_dict
{'Name': 'Josh', 'Gender': 'Male', 'Age': 22}

如果您要获得更多价值,可以改为:

values = [['Josh','Helen'], ['Male','Female'], [22,"I'd rather not tell"]]
>>> my_dict = dict(zip(attributes,values))
>>> print my_dict
{'Name': ['Josh','Helen'], 'Gender': ['Male','Female'], 'Age': [22,"I'd rather not tell"]}

>>> print my_dict['Name']
['Josh','Helen']

>>> print my_dict['Gender'][1]
Female

答案 1 :(得分:0)

完全取决于您希望如何访问它。如果您只想在当前正在运行的程序中访问它,那么可以执行矢量

data = []
keys = ['Name', 'Gender', 'Age']
persons = (("Josh", "Male", 22), )
for person in persons:
    data.append(dict(zip(keys, person)))

然后您可以这样访问它:

>>> data[0]
{'Name': 'Josh', 'Gender': 'Male', 'Age': 22}
>>> data[0]['Name']
Josh

甚至更好

from collections import namedtuple
n = namedtuple('Person', ('name', 'gender', 'age'))
persons = (("Josh", "Male", 22), )
for person in persons:
    data.append(Person(person))

然后你可以做

>>> p = data[0]
>>> p.name
Josh

但是,您无法修改元组,因此您必须创建一个新人并将该人存储在旧人的位置。
如果您想要更好地控制访问数据的方式(例如数据库样式查询,更高级/更简单的过滤),可能需要查看模型和查询集:例如https://docs.djangoproject.com/en/dev/ref/models/querysets/